Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add source links when using sphinx.ext.viewcode #620

Merged
merged 2 commits into from
Jan 11, 2024

Conversation

Eric-Arellano
Copy link
Collaborator

Implements #454 for projects that are using sphinx.ext.viewcode. All 3 of our projects were historically using it until I turned it off after removing qiskit.org, so the historical API docs are good to go. I'll restore it for current versions of these projects and regenerate the docs.

This implementation is not a perfect implementation:

  1. The visual design is a little awkward, especially the lack of padding. This can be improved via Design GitHub source code links #518
Screenshot 2024-01-11 at 12 28 07 PM
  1. The link only takes you to the overall code page, not the specific lines. This could be improved via Switch Qiskit, Runtime, and Provider to have more precise source code links #517.

But it's good enough to not block on these improvements.

This PR regenerates all Runtime historical versions, but not any current versions nor Qiskit historical versions.

How source code URLs are determined

sphinx.ext.viewcode embeds a copy of every Python file used in API docs and uses internal relative links like ../modules/qiskit_ibm_runtime/ibm_backend.html. They correspond to Python files we can be confident exist. We transform those relative links into GitHub links here:

export function removeHtmlExtensionsInRelativeLinks(
$: CheerioAPI,
$main: Cheerio<any>,
): void {
$main.find("a").each((_, link) => {
const $link = $(link);
const href = $link.attr("href");
if (href && !href.startsWith("http")) {
$link.attr("href", href.replaceAll(".html", ""));
}
});
}

export function replaceSourceLinksWithGitHub(
$: CheerioAPI,
$main: Cheerio<any>,
baseSourceUrl: string,
): void {
$main.find("a").each((_, a) => {
const $a = $(a);
const href = $a.attr("href");
if (
href === undefined ||
href.startsWith("http:") ||
!href.includes("_modules/")
) {
return;
}
//_modules/qiskit_ibm_runtime/ibm_backend
const match = href.match(/_modules\/(.*?)(#|$)/)!;
const newHref = `${baseSourceUrl}${match[1]}.py`;
$a.attr("href", newHref);
});
}

Our links assume that there is a branch called stable/<versionWithoutPatch in GitHub, like stable/0.8.

Replacing [source] with GitHub ↗︎

We remove the original link from Sphinx and replace it with our own. This is important so that the link is not included in the <code> HTML element incorrectly. It also allows us to set a custom link label and title (the text when highlighting).

Copy link
Collaborator

@arnaucasau arnaucasau left a comment

Choose a reason for hiding this comment

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

Looks good to me, thank you Eric! Tested locally and all works well!

@Eric-Arellano
Copy link
Collaborator Author

"Extended checks" fails but not due to anything from this PR. It was already broken. I'll fix in a follow up.

@Eric-Arellano Eric-Arellano merged commit e37f0b9 into main Jan 11, 2024
4 of 5 checks passed
@Eric-Arellano Eric-Arellano deleted the EA/github-source-link branch January 11, 2024 18:29
Eric-Arellano added a commit to Qiskit/qiskit-ibm-runtime that referenced this pull request Jan 12, 2024
We got source links working in API docs on docs.quantum.ibm.com! See Qiskit/documentation#620. To do this, we need to active `sphinx.ext.viewcode`.

Note that we still plan to improve this implementation in the future to have more precise links by using `sphinx.ext.linkcode`, tracked by Qiskit/documentation#517. This PR is to unblock the first iteration of this source links mechanism.
Eric-Arellano added a commit to Eric-Arellano/qiskit-ibm-runtime that referenced this pull request Jan 12, 2024
We got source links working in API docs on docs.quantum.ibm.com! See Qiskit/documentation#620. To do this, we need to active `sphinx.ext.viewcode`.

Note that we still plan to improve this implementation in the future to have more precise links by using `sphinx.ext.linkcode`, tracked by Qiskit/documentation#517. This PR is to unblock the first iteration of this source links mechanism.
Eric-Arellano added a commit to Qiskit/qiskit-ibm-runtime that referenced this pull request Jan 12, 2024
We got source links working in API docs on docs.quantum.ibm.com! See Qiskit/documentation#620. To do this, we need to active `sphinx.ext.viewcode`.

Note that we still plan to improve this implementation in the future to have more precise links by using `sphinx.ext.linkcode`, tracked by Qiskit/documentation#517. This PR is to unblock the first iteration of this source links mechanism.
kt474 added a commit to Qiskit/qiskit-ibm-runtime that referenced this pull request Jan 31, 2024
* Migrate fake backends from `qiskit.providers.fake_provider` (#1140)

* Migrate fake provider

* fix lint

* Only migrate backends and fake_provider file to minimize duplication

* Add reno

* Update snippet to use runtime service

---------

Co-authored-by: Kevin Tian <kevin.tian@ibm.com>

* Fix BYOB job results bytes typing issue  (#1220)

* try/except raw result truncation

* catch typeError

* revert try/except, use response.text

* update unit test

* Fix fake backends integration test (#1225)

* Clean up/fix integration test

* Update test case

* Fix black

* Added deprecation warning when using qiskitrc file (#1219)

* Added deprecation warning when using qiskitrc file

* Fixed bug whereby deprecation warnings cause failure for all 'qiskit*' modules. Changed warning to deprecation warning.

* Release note

* Small grammer fix

* black

---------

Co-authored-by: Kevin Tian <kevin.tian@ibm.com>

* Update session.from_id() (#1163)

* update session.from_id()

* add deprecation warning

* add reno

* Prepare release 0.15.0 (#1226)

* Update main branch 0.16.0 (#1227)

* Revert `Session.from_id 0.15.0` changes   (#1229)

* Revert "Update session.from_id() (#1163)"

This reverts commit 8fa0472.

* add reno

* Prepare release 0.15.1 (#1230)

* Update main branch to 0.16.0 again (#1232)

* Remove all code related to custom programs (#1192)

* initial removal

* cleanup more files

* move result_decoder

* fix lint

* update unit tests

* update integration tests

* more docs changes

* release note

* fix path

---------

Co-authored-by: Jessie Yu <jessieyu@us.ibm.com>

* Make sessions thread safe (#1196)

* Make sessions thread safe.

The lock prevents other threads from sending new jobs to the service
only if the session hasnot been setup yet. I.e.: when sending the
first "session starter job", or root job. After this happens, the code
is left unlocked to allow threads to access the service concurrently.

Error handling is needed to ensure the lock is always released.

* Allow multiple sessions to execute simultaneously

* Make session test more deterministic

---------

Co-authored-by: Kevin Tian <kevin.tian@ibm.com>
Co-authored-by: Jessie Yu <jessieyu@us.ibm.com>

* Instance & channel_strategy validation  (#1233)

* compare cloud instance with channel strategy

* fix unit tests

* error wording

---------

Co-authored-by: Jessie Yu <jessieyu@us.ibm.com>

* Prepare release 0.16.1 (#1239)

* release notes

* fix release

* update to 0.17 (#1240)

* Stop referring to qiskit.org in API docs (#1242)

* Add job.properties() method (#1252)

* Add job.properties() method

* add reno

* Remove non-API docs and translations (#1256)

This is the same as Qiskit/qiskit#11352. Now that qiskit.org/ecosystem/ibm-runtime redirects to docs.quantum.ibm.com, we can simplify the docs. 

See the PR description in Qiskit/qiskit#11352 for details on the motivation for each change. The only difference from Qiskit is that we still keep the tutorials around because learning.quantum.ibm.com uses them.

I used a script with `ripgrep` to confirm that none of the images were in use.

* Raise error if backend retrieved not in current instance  (#1249)

* Error if backend not in instance

* add reno

* update reno

* docs build

* fix docs again

* docs formatting :/

* add integration test

* Update test/integration/test_backend.py

Co-authored-by: merav-aharoni <merav@il.ibm.com>

* Update test/integration/test_backend.py

Co-authored-by: merav-aharoni <merav@il.ibm.com>

---------

Co-authored-by: merav-aharoni <merav@il.ibm.com>

* Fix backend_converter `faulty_qubit` name error (#1257)

* fix backend_converter

* add reno

* Update Tutorial section names (#1241)

* The transpilation tutorial has been updated to use the new runtime transpilation passes, and Batch

* Fix style checker

* Updated names

* Updated section names for transpiled tutorial

* Updated grover

* Fixed consistency

* Final updates

---------

Co-authored-by: Kevin Tian <kevin.tian@ibm.com>

* make test_backend_wrong_instance IQP only (#1258)

* Add pointer to qiskit/documentation issues (#1260)

* add pointer to qiskit/documentation issues

* Update .github/ISSUE_TEMPLATE/config.yml

Co-authored-by: Eric Arellano <14852634+Eric-Arellano@users.noreply.github.com>

* Update CONTRIBUTING.md

Co-authored-by: Eric Arellano <14852634+Eric-Arellano@users.noreply.github.com>

---------

Co-authored-by: Kevin Tian <kt474@cornell.edu>
Co-authored-by: Eric Arellano <14852634+Eric-Arellano@users.noreply.github.com>

* Update `test_backend_wrong_instance` (#1259)

* wip debug wrong instance test

* enable integration test

* use backend names instead of obj

* Don't block for the first job in a session (#1170)

* don't block if backend not selected

* add reno

* add test

* Add `activated_at` field to session.details() (#1266)

* add activated_at to session.details()

* add reno

* Revert "Don't block for the first job in a session (#1170)" (#1267)

* Revert "Don't block for the first job in a session (#1170)"

This reverts commit f2e24e4.

* keep test

* Prepare release 0.17.0 (#1268)

* update main branch 0.17.1 (#1269)

* Remove test_session_no_backend (#1272)

* Added RuntimeJob.queue_info() method (#1210)

* Added support for RuntimeJob.queueinfo

* Moved methods for consistency with main

* Changed backend_status to job.status

* lint

* update test

---------

Co-authored-by: Kevin Tian <kevin.tian@ibm.com>

* Replace programs with primitives in api docs  (#1281)

* programs -> primitives

* address comment

* Deprecate service.runtime (#1278)

* Deprecate service.runtime

* add reno

* Removed support for qiskitrc file (#1121)

* Removed support for qiskitrc file

* lint

---------

Co-authored-by: Kevin Tian <kevin.tian@ibm.com>

* Add max_time parameter to IBMBackend.open_session() (#1274)

* Added max_time to IBMBackend.open_session.

* Release note

* Changed format of test

* Migrate fake backend base classes (#1270)

Co-authored-by: Kevin Tian <kevin.tian@ibm.com>

* Add Q-CTRL integration tests  (#1173)

* add initial qctrl test file

* add test & decorator

* add tests from Mirko

* Added assertness for preciseness of results

* remove print statements

* move into e2e folder

* setup ci

* Update q-ctrl-tests.yml

* add account test

* add more account tests

* Update test/qctrl/test_qctrl.py

Co-authored-by: Rathish Cholarajan <rathishc24@gmail.com>

* address comments

* update date to 2023

* Update test/qctrl/test_qctrl.py

Co-authored-by: Blake Johnson <blakejohnson04@gmail.com>

* Update test/qctrl/test_qctrl.py

Co-authored-by: Blake Johnson <blakejohnson04@gmail.com>

---------

Co-authored-by: merav-aharoni <merav@il.ibm.com>
Co-authored-by: Rathish Cholarajan <rathishc24@gmail.com>
Co-authored-by: Blake Johnson <blakejohnson04@gmail.com>

* update grover tutorial equation (#1293)

* Add dynamic circuits backend filter (#1291)

* Add dynamic circuits backend filter

* add reno

* switch docs from mathjax to katex (#1301)

Updates the sphinx documentation build to use KaTeX instead of MathJax because the final docs build uses KaTeX. The same change was made in Qiskit in Qiskit/qiskit#11435.

* Remove qiskit.org links (#1302)

* Update session_id docstring (#1304)

* Update provider and qiskit versions (#1305)

* Exclude params on job retrieval by default (#1308)

* exclude params on job retrieval by default

* add reno

* add test

* Reactive the viewcode extension for docs (#1312)

We got source links working in API docs on docs.quantum.ibm.com! See Qiskit/documentation#620. To do this, we need to active `sphinx.ext.viewcode`.

Note that we still plan to improve this implementation in the future to have more precise links by using `sphinx.ext.linkcode`, tracked by Qiskit/documentation#517. This PR is to unblock the first iteration of this source links mechanism.

* Add config files to manifest (#1319)

* Fix pip environment resolution (#1329)

Calling `pip install` multiple times can (deeply unfortunately) allow an
environment to become out-of-sync; `pip` doesn't "remember" the
constraints of previous installation commands.

One of the largest effects here is that doing `pip install -e .`
_followed_ by `pip install git+<qiskit>@main` installs `qiskit-terra`
from the initial installation (via `qiskit==0.45.2`), then installs
`qiskit==1.0.0.dev0` from Git, which is an incompatible environment.
Doing the whole environment resolution in a single `pip install` command
fixes this, as the `qiskit` dependency is correctly resolved to be
_only_ the `1.0.0.dev0` version.

Co-authored-by: Kevin Tian <kevin.tian@ibm.com>

* Use IBM-Provider-vendored pub/sub mechanism (#1328)

This is being removed from Qiskit 1.0, and the IBM Provider is (until
deprecated) taking over brokering the IBM-Runtime-internal events.

Co-authored-by: Kevin Tian <kevin.tian@ibm.com>

* Add transpiler tests (#1323)

* Add transpiler tests

* remove qiskittestcase

* Prepare release 0.18.0 (#1335)

* Update main branch 0.18.1 (#1336)

* Turn off qiskit.org docs deploy (#1340)

* Remove `qiskit.test` (#1292)

* replace qiskit.test.ReferenceCircuits

* replace BaseQiskitTest

* Update qiskit_ibm_runtime/qiskit_runtime_service.py

Co-authored-by: Jessie Yu <jessieyu@us.ibm.com>

* Update qiskit_ibm_runtime/sampler.py

Co-authored-by: Jessie Yu <jessieyu@us.ibm.com>

* Update qiskit_ibm_runtime/session.py

Co-authored-by: Jessie Yu <jessieyu@us.ibm.com>

* Update test/utils.py

Co-authored-by: Jessie Yu <jessieyu@us.ibm.com>

---------

Co-authored-by: Jessie Yu <jessieyu@us.ibm.com>

* lint

---------

Co-authored-by: Elena Peña Tapia <57907331+ElePT@users.noreply.github.com>
Co-authored-by: merav-aharoni <merav@il.ibm.com>
Co-authored-by: Jessie Yu <jessieyu@us.ibm.com>
Co-authored-by: Salvador de la Puente González <neo.salvador@gmail.com>
Co-authored-by: Eric Arellano <14852634+Eric-Arellano@users.noreply.github.com>
Co-authored-by: Sanket Panda <pandasa123@gmail.com>
Co-authored-by: abbycross <across@us.ibm.com>
Co-authored-by: Rathish Cholarajan <rathishc24@gmail.com>
Co-authored-by: Blake Johnson <blakejohnson04@gmail.com>
Co-authored-by: Kevin J. Sung <kevjsung@umich.edu>
Co-authored-by: Jake Lishman <jake.lishman@ibm.com>
kt474 added a commit to Qiskit/qiskit-ibm-runtime that referenced this pull request Feb 7, 2024
* Migrate fake backends from `qiskit.providers.fake_provider` (#1140)

* Migrate fake provider

* fix lint

* Only migrate backends and fake_provider file to minimize duplication

* Add reno

* Update snippet to use runtime service

---------

Co-authored-by: Kevin Tian <kevin.tian@ibm.com>

* Fix BYOB job results bytes typing issue  (#1220)

* try/except raw result truncation

* catch typeError

* revert try/except, use response.text

* update unit test

* Fix fake backends integration test (#1225)

* Clean up/fix integration test

* Update test case

* Fix black

* Added deprecation warning when using qiskitrc file (#1219)

* Added deprecation warning when using qiskitrc file

* Fixed bug whereby deprecation warnings cause failure for all 'qiskit*' modules. Changed warning to deprecation warning.

* Release note

* Small grammer fix

* black

---------

Co-authored-by: Kevin Tian <kevin.tian@ibm.com>

* Update session.from_id() (#1163)

* update session.from_id()

* add deprecation warning

* add reno

* Prepare release 0.15.0 (#1226)

* Update main branch 0.16.0 (#1227)

* Revert `Session.from_id 0.15.0` changes   (#1229)

* Revert "Update session.from_id() (#1163)"

This reverts commit 8fa0472.

* add reno

* Prepare release 0.15.1 (#1230)

* Update main branch to 0.16.0 again (#1232)

* Remove all code related to custom programs (#1192)

* initial removal

* cleanup more files

* move result_decoder

* fix lint

* update unit tests

* update integration tests

* more docs changes

* release note

* fix path

---------

Co-authored-by: Jessie Yu <jessieyu@us.ibm.com>

* Make sessions thread safe (#1196)

* Make sessions thread safe.

The lock prevents other threads from sending new jobs to the service
only if the session hasnot been setup yet. I.e.: when sending the
first "session starter job", or root job. After this happens, the code
is left unlocked to allow threads to access the service concurrently.

Error handling is needed to ensure the lock is always released.

* Allow multiple sessions to execute simultaneously

* Make session test more deterministic

---------

Co-authored-by: Kevin Tian <kevin.tian@ibm.com>
Co-authored-by: Jessie Yu <jessieyu@us.ibm.com>

* Instance & channel_strategy validation  (#1233)

* compare cloud instance with channel strategy

* fix unit tests

* error wording

---------

Co-authored-by: Jessie Yu <jessieyu@us.ibm.com>

* Prepare release 0.16.1 (#1239)

* release notes

* fix release

* update to 0.17 (#1240)

* Stop referring to qiskit.org in API docs (#1242)

* Add job.properties() method (#1252)

* Add job.properties() method

* add reno

* Remove non-API docs and translations (#1256)

This is the same as Qiskit/qiskit#11352. Now that qiskit.org/ecosystem/ibm-runtime redirects to docs.quantum.ibm.com, we can simplify the docs. 

See the PR description in Qiskit/qiskit#11352 for details on the motivation for each change. The only difference from Qiskit is that we still keep the tutorials around because learning.quantum.ibm.com uses them.

I used a script with `ripgrep` to confirm that none of the images were in use.

* Raise error if backend retrieved not in current instance  (#1249)

* Error if backend not in instance

* add reno

* update reno

* docs build

* fix docs again

* docs formatting :/

* add integration test

* Update test/integration/test_backend.py

Co-authored-by: merav-aharoni <merav@il.ibm.com>

* Update test/integration/test_backend.py

Co-authored-by: merav-aharoni <merav@il.ibm.com>

---------

Co-authored-by: merav-aharoni <merav@il.ibm.com>

* Fix backend_converter `faulty_qubit` name error (#1257)

* fix backend_converter

* add reno

* Update Tutorial section names (#1241)

* The transpilation tutorial has been updated to use the new runtime transpilation passes, and Batch

* Fix style checker

* Updated names

* Updated section names for transpiled tutorial

* Updated grover

* Fixed consistency

* Final updates

---------

Co-authored-by: Kevin Tian <kevin.tian@ibm.com>

* make test_backend_wrong_instance IQP only (#1258)

* Add pointer to qiskit/documentation issues (#1260)

* add pointer to qiskit/documentation issues

* Update .github/ISSUE_TEMPLATE/config.yml

Co-authored-by: Eric Arellano <14852634+Eric-Arellano@users.noreply.github.com>

* Update CONTRIBUTING.md

Co-authored-by: Eric Arellano <14852634+Eric-Arellano@users.noreply.github.com>

---------

Co-authored-by: Kevin Tian <kt474@cornell.edu>
Co-authored-by: Eric Arellano <14852634+Eric-Arellano@users.noreply.github.com>

* Update `test_backend_wrong_instance` (#1259)

* wip debug wrong instance test

* enable integration test

* use backend names instead of obj

* Don't block for the first job in a session (#1170)

* don't block if backend not selected

* add reno

* add test

* Add `activated_at` field to session.details() (#1266)

* add activated_at to session.details()

* add reno

* Revert "Don't block for the first job in a session (#1170)" (#1267)

* Revert "Don't block for the first job in a session (#1170)"

This reverts commit f2e24e4.

* keep test

* Prepare release 0.17.0 (#1268)

* update main branch 0.17.1 (#1269)

* Remove test_session_no_backend (#1272)

* Added RuntimeJob.queue_info() method (#1210)

* Added support for RuntimeJob.queueinfo

* Moved methods for consistency with main

* Changed backend_status to job.status

* lint

* update test

---------

Co-authored-by: Kevin Tian <kevin.tian@ibm.com>

* Replace programs with primitives in api docs  (#1281)

* programs -> primitives

* address comment

* Deprecate service.runtime (#1278)

* Deprecate service.runtime

* add reno

* Removed support for qiskitrc file (#1121)

* Removed support for qiskitrc file

* lint

---------

Co-authored-by: Kevin Tian <kevin.tian@ibm.com>

* Add max_time parameter to IBMBackend.open_session() (#1274)

* Added max_time to IBMBackend.open_session.

* Release note

* Changed format of test

* Migrate fake backend base classes (#1270)

Co-authored-by: Kevin Tian <kevin.tian@ibm.com>

* Add Q-CTRL integration tests  (#1173)

* add initial qctrl test file

* add test & decorator

* add tests from Mirko

* Added assertness for preciseness of results

* remove print statements

* move into e2e folder

* setup ci

* Update q-ctrl-tests.yml

* add account test

* add more account tests

* Update test/qctrl/test_qctrl.py

Co-authored-by: Rathish Cholarajan <rathishc24@gmail.com>

* address comments

* update date to 2023

* Update test/qctrl/test_qctrl.py

Co-authored-by: Blake Johnson <blakejohnson04@gmail.com>

* Update test/qctrl/test_qctrl.py

Co-authored-by: Blake Johnson <blakejohnson04@gmail.com>

---------

Co-authored-by: merav-aharoni <merav@il.ibm.com>
Co-authored-by: Rathish Cholarajan <rathishc24@gmail.com>
Co-authored-by: Blake Johnson <blakejohnson04@gmail.com>

* update grover tutorial equation (#1293)

* Add dynamic circuits backend filter (#1291)

* Add dynamic circuits backend filter

* add reno

* switch docs from mathjax to katex (#1301)

Updates the sphinx documentation build to use KaTeX instead of MathJax because the final docs build uses KaTeX. The same change was made in Qiskit in Qiskit/qiskit#11435.

* Remove qiskit.org links (#1302)

* Update session_id docstring (#1304)

* Update provider and qiskit versions (#1305)

* Exclude params on job retrieval by default (#1308)

* exclude params on job retrieval by default

* add reno

* add test

* Reactive the viewcode extension for docs (#1312)

We got source links working in API docs on docs.quantum.ibm.com! See Qiskit/documentation#620. To do this, we need to active `sphinx.ext.viewcode`.

Note that we still plan to improve this implementation in the future to have more precise links by using `sphinx.ext.linkcode`, tracked by Qiskit/documentation#517. This PR is to unblock the first iteration of this source links mechanism.

* Add config files to manifest (#1319)

* Fix pip environment resolution (#1329)

Calling `pip install` multiple times can (deeply unfortunately) allow an
environment to become out-of-sync; `pip` doesn't "remember" the
constraints of previous installation commands.

One of the largest effects here is that doing `pip install -e .`
_followed_ by `pip install git+<qiskit>@main` installs `qiskit-terra`
from the initial installation (via `qiskit==0.45.2`), then installs
`qiskit==1.0.0.dev0` from Git, which is an incompatible environment.
Doing the whole environment resolution in a single `pip install` command
fixes this, as the `qiskit` dependency is correctly resolved to be
_only_ the `1.0.0.dev0` version.

Co-authored-by: Kevin Tian <kevin.tian@ibm.com>

* Use IBM-Provider-vendored pub/sub mechanism (#1328)

This is being removed from Qiskit 1.0, and the IBM Provider is (until
deprecated) taking over brokering the IBM-Runtime-internal events.

Co-authored-by: Kevin Tian <kevin.tian@ibm.com>

* Add transpiler tests (#1323)

* Add transpiler tests

* remove qiskittestcase

* Prepare release 0.18.0 (#1335)

* Update main branch 0.18.1 (#1336)

* Turn off qiskit.org docs deploy (#1340)

* Remove `qiskit.test` (#1292)

* replace qiskit.test.ReferenceCircuits

* replace BaseQiskitTest

* Update qiskit_ibm_runtime/qiskit_runtime_service.py

Co-authored-by: Jessie Yu <jessieyu@us.ibm.com>

* Update qiskit_ibm_runtime/sampler.py

Co-authored-by: Jessie Yu <jessieyu@us.ibm.com>

* Update qiskit_ibm_runtime/session.py

Co-authored-by: Jessie Yu <jessieyu@us.ibm.com>

* Update test/utils.py

Co-authored-by: Jessie Yu <jessieyu@us.ibm.com>

---------

Co-authored-by: Jessie Yu <jessieyu@us.ibm.com>

* Add missing API Refs to docs (#1343)

### Summary
The documentation from the `transpile` and `fake_provider` modules does not appear in the rendered docs in qiskit.org/documentation or docs.quantum-computing.ibm.com.


### Details and comments

Fixes [Qiskit Docs Issue #238](Qiskit/documentation#238)

Replaces PR #1330.

Transpiler Doc files added:

 - qiskit_ibm_runtime.transpiler.passes.html
- qiskit_ibm_provider.transpiler.passes.basis.html
- qiskit_ibm_provider.transpiler.passes.scheduling.ALAPScheduleAnalysis.html
- qiskit_ibm_provider.transpiler.passes.scheduling.ASAPScheduleAnalysis.html
- qiskit_ibm_provider.transpiler.passes.scheduling.BlockBasePadder.html
- qiskit_ibm_provider.transpiler.passes.scheduling.DynamicCircuitInstructionDurations.html
- qiskit_ibm_provider.transpiler.passes.scheduling.html
- qiskit_ibm_provider.transpiler.passes.scheduling.PadDelay.html
- qiskit_ibm_provider.transpiler.passes.scheduling.PadDynamicalDecoupling.html

<details>
<summary> Fake Provider Docs added: </summary>

- qiskit_ibm_runtime.fake_provider.FakeAlmaden.html
- qiskit_ibm_runtime.fake_provider.FakeAlmadenV2.html
- qiskit_ibm_runtime.fake_provider.FakeArmonk.html
- qiskit_ibm_runtime.fake_provider.FakeArmonkV2.html
- qiskit_ibm_runtime.fake_provider.FakeAthens.html
- qiskit_ibm_runtime.fake_provider.FakeAthensV2.html
- qiskit_ibm_runtime.fake_provider.FakeAuckland.html
- qiskit_ibm_runtime.fake_provider.FakeBelem.html
- qiskit_ibm_runtime.fake_provider.FakeBelemV2.html
- qiskit_ibm_runtime.fake_provider.FakeBoeblingen.html
- qiskit_ibm_runtime.fake_provider.FakeBoeblingenV2.html
- qiskit_ibm_runtime.fake_provider.FakeBogota.html
- qiskit_ibm_runtime.fake_provider.FakeBogotaV2.html
- qiskit_ibm_runtime.fake_provider.FakeBrooklyn.html
- qiskit_ibm_runtime.fake_provider.FakeBrooklynV2.html
- qiskit_ibm_runtime.fake_provider.FakeBurlington.html
- qiskit_ibm_runtime.fake_provider.FakeBurlingtonV2.html
- qiskit_ibm_runtime.fake_provider.FakeCairo.html
- qiskit_ibm_runtime.fake_provider.FakeCairoV2.html
- qiskit_ibm_runtime.fake_provider.FakeCambridge.html
- qiskit_ibm_runtime.fake_provider.FakeCambridgeV2.html
- qiskit_ibm_runtime.fake_provider.FakeCasablanca.html
- qiskit_ibm_runtime.fake_provider.FakeCasablancaV2.html
- qiskit_ibm_runtime.fake_provider.FakeEssex.html
- qiskit_ibm_runtime.fake_provider.FakeEssexV2.html
- qiskit_ibm_runtime.fake_provider.FakeGeneva.html
- qiskit_ibm_runtime.fake_provider.FakeGuadalupe.html
- qiskit_ibm_runtime.fake_provider.FakeGuadalupeV2.html
- qiskit_ibm_runtime.fake_provider.FakeHanoi.html
- qiskit_ibm_runtime.fake_provider.FakeHanoiV2.html
- qiskit_ibm_runtime.fake_provider.FakeJakarta.html
- qiskit_ibm_runtime.fake_provider.FakeJakartaV2.html
- qiskit_ibm_runtime.fake_provider.FakeJohannesburg.html
- qiskit_ibm_runtime.fake_provider.FakeJohannesburgV2.html
- qiskit_ibm_runtime.fake_provider.FakeKolkata.html
- qiskit_ibm_runtime.fake_provider.FakeKolkataV2.html
- qiskit_ibm_runtime.fake_provider.FakeLagos.html
- qiskit_ibm_runtime.fake_provider.FakeLagosV2.html
- qiskit_ibm_runtime.fake_provider.FakeLima.html
- qiskit_ibm_runtime.fake_provider.FakeLimaV2.html
- qiskit_ibm_runtime.fake_provider.FakeLondon.html
- qiskit_ibm_runtime.fake_provider.FakeLondonV2.html
- qiskit_ibm_runtime.fake_provider.FakeManhattan.html
- qiskit_ibm_runtime.fake_provider.FakeManhattanV2.html
- qiskit_ibm_runtime.fake_provider.FakeManila.html
- qiskit_ibm_runtime.fake_provider.FakeManilaV2.html
- qiskit_ibm_runtime.fake_provider.FakeMelbourne.html
- qiskit_ibm_runtime.fake_provider.FakeMelbourneV2.html
- qiskit_ibm_runtime.fake_provider.FakeMontreal.html
- qiskit_ibm_runtime.fake_provider.FakeMontrealV2.html
- qiskit_ibm_runtime.fake_provider.FakeMumbai.html
- qiskit_ibm_runtime.fake_provider.FakeMumbaiV2.html
- qiskit_ibm_runtime.fake_provider.FakeNairobi.html
- qiskit_ibm_runtime.fake_provider.FakeNairobiV2.html
- qiskit_ibm_runtime.fake_provider.FakeOslo.html
- qiskit_ibm_runtime.fake_provider.FakeOurense.html
- qiskit_ibm_runtime.fake_provider.FakeOurenseV2.html
- qiskit_ibm_runtime.fake_provider.FakeParis.html
- qiskit_ibm_runtime.fake_provider.FakeParisV2.html
- qiskit_ibm_runtime.fake_provider.FakePerth.html
- qiskit_ibm_runtime.fake_provider.FakePoughkeepsie.html
- qiskit_ibm_runtime.fake_provider.FakePoughkeepsieV2.html
- qiskit_ibm_runtime.fake_provider.FakePrague.html
- qiskit_ibm_runtime.fake_provider.FakeProviderForBackendV2.html
- qiskit_ibm_runtime.fake_provider.FakeProvider.html
- qiskit_ibm_runtime.fake_provider.FakeQuito.html
- qiskit_ibm_runtime.fake_provider.FakeQuitoV2.html
- qiskit_ibm_runtime.fake_provider.FakeRochester.html
- qiskit_ibm_runtime.fake_provider.FakeRochesterV2.html
- qiskit_ibm_runtime.fake_provider.FakeRome.html
- qiskit_ibm_runtime.fake_provider.FakeRomeV2.html
- qiskit_ibm_runtime.fake_provider.FakeRueschlikon.html
- qiskit_ibm_runtime.fake_provider.FakeSantiago.html
- qiskit_ibm_runtime.fake_provider.FakeSantiagoV2.html
- qiskit_ibm_runtime.fake_provider.FakeSherbrooke.html
- qiskit_ibm_runtime.fake_provider.FakeSingapore.html
- qiskit_ibm_runtime.fake_provider.FakeSingaporeV2.html
- qiskit_ibm_runtime.fake_provider.FakeSydney.html
- qiskit_ibm_runtime.fake_provider.FakeSydneyV2.html
- qiskit_ibm_runtime.fake_provider.FakeTenerife.html
- qiskit_ibm_runtime.fake_provider.FakeTokyo.html
- qiskit_ibm_runtime.fake_provider.FakeToronto.html
- qiskit_ibm_runtime.fake_provider.FakeTorontoV2.html
- qiskit_ibm_runtime.fake_provider.FakeValencia.html
- qiskit_ibm_runtime.fake_provider.FakeValenciaV2.html
- qiskit_ibm_runtime.fake_provider.FakeVigo.html
- qiskit_ibm_runtime.fake_provider.FakeVigoV2.html
- qiskit_ibm_runtime.fake_provider.FakeWashington.html
- qiskit_ibm_runtime.fake_provider.FakeWashingtonV2.html
- qiskit_ibm_runtime.fake_provider.FakeYorktown.html
- qiskit_ibm_runtime.fake_provider.FakeYorktownV2.html

</details>

Co-authored-by: Rebecca Dimock <66339736+beckykd@users.noreply.github.com>

* Set use_symengine on qpy generation if symengine is installed (#1355)

This commit sets the use_symengine flag during qpy export used during
job payload generation if symengine is installed. For qiskit <1.0
symengine is a hard dependency on platforms that have support for it
(x86_64, aarch64, and ppc64le linux and macOS) and an optional
requirement on other qiskit supported platforms, and when available it
greatly improves the runtime performance of symbolic expressions in
Qiskit. By default QPY opts for the more compatible sympy representation
of an unbound ParameterExpression as it's maximally compatible, and
means that no matter the environment the payload will be loaded from it
will be able to parse the payload. In QPY version 10 a new flag was
added to the payload definition that enables users to use a native
binary symengine representation of a symbolic expression that is
significantly faster to generate and parse, but it still defaults to
sympy as using this flag limits the compatibility of the payload.
However, for runtime job submission we know that the service always has
symengine available so we should be using this flag for job submission
if the local environment has symengine installed as it will greatly
speed up the serialization of unbound ParameterExpression objects.

In Qiskit 1.0, symengine is promoted to a hard requriment for all
environments and use_symengine=True is the default in Qiskit's qpy
module. But, setting it like this is still a good idea as it will always
be safe to do this, it's just in qiskit 1.0 symengine will always be
installed.

* Fix for unit tests (#1356)

* Run all unit tests

* Import fake providers

* Format

* Fake providers not used in this branch

* Unused import

---------

Co-authored-by: Kevin Tian <kevin.tian@ibm.com>

* Update flaky integration tests (#1359)

* Fix bad Sphinx API doc Provider naming (#1360)

This resulted in the imports being called `qiskit_ibm_provider` rather than `qiskit_ibm_runtime`.

Co-authored-by: Frank Harkins <frankharkins@users.noreply.github.com>

* Merge qiskit-ibm-provider into qiskit-ibm-runtime (#1285)

* initial commit

* more replacements

* more replacements

* add auth/api

* add reno

* add qpy module back

* address comments

* fix docs build

* Update invalid token test (#1367)

* Copy pub/sub code into qiskit-ibm-runtime (#1349)

* Copy pub/sub code into qiskit-ibm-runtime

* fix docs build

* Remove mthree from requirements-dev (#1370)

* Handle Qiskit 1.0 removals (#1363)

* Handle Qiskit 1.0 removals

* Remove removed qiskit modules

* add both qiskit synthesis imports

* fix docs build

* fix lint errors from 1.0.0RC1

* update basicaer import

* Update qiskit_ibm_runtime/fake_provider/fake_backend.py

Co-authored-by: Elena Peña Tapia <57907331+ElePT@users.noreply.github.com>

* address comments

* Update imports & docstrings

---------

Co-authored-by: Elena Peña Tapia <57907331+ElePT@users.noreply.github.com>

* Copy over provider session & remove qiskit-ibm-provider (#1368)

* Move provider's session & remove qiskit-ibm-provider

* fix black

* Handle qpy serialization across versions and delete vendored fork (#1377)

* Handle qpy serialization across versions and delete vendored fork

For the next qiskit-ibm-runtime release it is desired to have it support
both Qiskit 0.45.x/0.46.x and Qiskit 1.0.0. To do this with QPY it means
we need to emit a fixed qpy version of 10 as that's currently the
maximum version the server side can parse. The easiest way to manage
this across versions is actually to rely on Qiskit's qpy module again.
Starting in Qiskit 1.0.0 the qiskit.qpy.dump() function a new kwarg,
version exists to specify the version of qpy emitted. We can use this
to control the rollout of QPY format versions as the server side is
updated. For right now this is fixed to version 10 which is the same as
the QPY format version emitted by 0.45.x and 0.46.0. Because the
versions are the same we can just use qiskit's qpy module moving forward
as either we're on qiskit 0.45.x/0.46.x and will emit version 10 (as there
is no option) or we're on >=1.0.0 and we explicitly set the qpy version
to one that's compatible with the server side.

The qpy internals usage to serialize parameters and parameter
expressions are left in place (although expanded on to include #1355 for
parameter expressions) as an alternative needs to be considered for
this. It is not a good idea to rely on qpy internals and explicitly
private functions to do partial serialization.

This commit also deletes the vendored fork as it's never been included
in a released version of qiskit-ibm-runtime and nothing is using it
anymore.

Related to: #1375

* Fix lint

* Fix lint again

* Run integration tests against Qiskit main (#1376)

* Fix qiskit main integratino tests cron job (#1379)

* Prepare release 0.19.0 (#1380)

* Prepare release 0.19

* add reno stating compatibility

* Update main branch version 0.19.1 (#1382)

* Porting qiskit-ibm-provider/787: Fix `DynamicCircuitInstructionDurations.from_backend` for both `Backend versions` (#1383)

* porting qiskit-ibm-provider/pull/787

* porting qiskit-ibm-provider/pull/787

* black

* oops

* monkey patch Qiskit/qiskit#11727

* black lynt

* mypy

---------

Co-authored-by: Kevin Tian <kevin.tian@ibm.com>

* Cast use_symengine input to a bool (#1385)

* Cast use_symengine input to a bool

This commit works around a bug in Qiskit 0.45.x, 0.46.0, and 1.0.0rc1
with the `use_symengine` flag on `qpy.dump()`. The dump function has a
bug when it receives a truthy value instead of a bool literal that it
will generate a corrupt qpy because of a mismatch between how the
encoding was processed (the encoding is incorrectly set to sympy in the
file header but uses symengine encoding in the actual body of the
circuit.  This is being fixed in Qiskit/qiskit#11730 for 1.0.0, and will
be backported to 0.46.1. But to ensure compatibility with 0.45.x, 0.46.0,
and 1.0.0rc1 while waiting for those releases we can workaround this by
just casting the value to a boolean.

* Fix mypy failures

* Mypy fixes again

* Prepare release 0.19.1 (#1386)

* Update main branch version 0.19.2 (#1388)

* fix import issues

* more import issues

* disable docs warning

---------

Co-authored-by: Elena Peña Tapia <57907331+ElePT@users.noreply.github.com>
Co-authored-by: Kevin Tian <kevin.tian@ibm.com>
Co-authored-by: merav-aharoni <merav@il.ibm.com>
Co-authored-by: Salvador de la Puente González <neo.salvador@gmail.com>
Co-authored-by: Eric Arellano <14852634+Eric-Arellano@users.noreply.github.com>
Co-authored-by: Sanket Panda <pandasa123@gmail.com>
Co-authored-by: abbycross <across@us.ibm.com>
Co-authored-by: Kevin Tian <kt474@cornell.edu>
Co-authored-by: Rathish Cholarajan <rathishc24@gmail.com>
Co-authored-by: Blake Johnson <blakejohnson04@gmail.com>
Co-authored-by: Kevin J. Sung <kevjsung@umich.edu>
Co-authored-by: Jake Lishman <jake.lishman@ibm.com>
Co-authored-by: Kaelyn Ferris <43348706+kaelynj@users.noreply.github.com>
Co-authored-by: Rebecca Dimock <66339736+beckykd@users.noreply.github.com>
Co-authored-by: Matthew Treinish <mtreinish@kortar.org>
Co-authored-by: Diego Ristè <10402430+dieris@users.noreply.github.com>
Co-authored-by: Frank Harkins <frankharkins@users.noreply.github.com>
Co-authored-by: Luciano Bello <bel@zurich.ibm.com>
jyu00 added a commit to Qiskit/qiskit-ibm-runtime that referenced this pull request Feb 27, 2024
* Migrate fake backends from `qiskit.providers.fake_provider` (#1140)

* Migrate fake provider

* fix lint

* Only migrate backends and fake_provider file to minimize duplication

* Add reno

* Update snippet to use runtime service

---------

Co-authored-by: Kevin Tian <kevin.tian@ibm.com>

* Fix BYOB job results bytes typing issue  (#1220)

* try/except raw result truncation

* catch typeError

* revert try/except, use response.text

* update unit test

* Fix fake backends integration test (#1225)

* Clean up/fix integration test

* Update test case

* Fix black

* Added deprecation warning when using qiskitrc file (#1219)

* Added deprecation warning when using qiskitrc file

* Fixed bug whereby deprecation warnings cause failure for all 'qiskit*' modules. Changed warning to deprecation warning.

* Release note

* Small grammer fix

* black

---------

Co-authored-by: Kevin Tian <kevin.tian@ibm.com>

* Update session.from_id() (#1163)

* update session.from_id()

* add deprecation warning

* add reno

* Prepare release 0.15.0 (#1226)

* Update main branch 0.16.0 (#1227)

* Revert `Session.from_id 0.15.0` changes   (#1229)

* Revert "Update session.from_id() (#1163)"

This reverts commit 8fa0472.

* add reno

* Prepare release 0.15.1 (#1230)

* Update main branch to 0.16.0 again (#1232)

* Remove all code related to custom programs (#1192)

* initial removal

* cleanup more files

* move result_decoder

* fix lint

* update unit tests

* update integration tests

* more docs changes

* release note

* fix path

---------

Co-authored-by: Jessie Yu <jessieyu@us.ibm.com>

* Make sessions thread safe (#1196)

* Make sessions thread safe.

The lock prevents other threads from sending new jobs to the service
only if the session hasnot been setup yet. I.e.: when sending the
first "session starter job", or root job. After this happens, the code
is left unlocked to allow threads to access the service concurrently.

Error handling is needed to ensure the lock is always released.

* Allow multiple sessions to execute simultaneously

* Make session test more deterministic

---------

Co-authored-by: Kevin Tian <kevin.tian@ibm.com>
Co-authored-by: Jessie Yu <jessieyu@us.ibm.com>

* Instance & channel_strategy validation  (#1233)

* compare cloud instance with channel strategy

* fix unit tests

* error wording

---------

Co-authored-by: Jessie Yu <jessieyu@us.ibm.com>

* Prepare release 0.16.1 (#1239)

* release notes

* fix release

* update to 0.17 (#1240)

* Stop referring to qiskit.org in API docs (#1242)

* Add job.properties() method (#1252)

* Add job.properties() method

* add reno

* Remove non-API docs and translations (#1256)

This is the same as Qiskit/qiskit#11352. Now that qiskit.org/ecosystem/ibm-runtime redirects to docs.quantum.ibm.com, we can simplify the docs. 

See the PR description in Qiskit/qiskit#11352 for details on the motivation for each change. The only difference from Qiskit is that we still keep the tutorials around because learning.quantum.ibm.com uses them.

I used a script with `ripgrep` to confirm that none of the images were in use.

* Raise error if backend retrieved not in current instance  (#1249)

* Error if backend not in instance

* add reno

* update reno

* docs build

* fix docs again

* docs formatting :/

* add integration test

* Update test/integration/test_backend.py

Co-authored-by: merav-aharoni <merav@il.ibm.com>

* Update test/integration/test_backend.py

Co-authored-by: merav-aharoni <merav@il.ibm.com>

---------

Co-authored-by: merav-aharoni <merav@il.ibm.com>

* Fix backend_converter `faulty_qubit` name error (#1257)

* fix backend_converter

* add reno

* Update Tutorial section names (#1241)

* The transpilation tutorial has been updated to use the new runtime transpilation passes, and Batch

* Fix style checker

* Updated names

* Updated section names for transpiled tutorial

* Updated grover

* Fixed consistency

* Final updates

---------

Co-authored-by: Kevin Tian <kevin.tian@ibm.com>

* make test_backend_wrong_instance IQP only (#1258)

* Add pointer to qiskit/documentation issues (#1260)

* add pointer to qiskit/documentation issues

* Update .github/ISSUE_TEMPLATE/config.yml

Co-authored-by: Eric Arellano <14852634+Eric-Arellano@users.noreply.github.com>

* Update CONTRIBUTING.md

Co-authored-by: Eric Arellano <14852634+Eric-Arellano@users.noreply.github.com>

---------

Co-authored-by: Kevin Tian <kt474@cornell.edu>
Co-authored-by: Eric Arellano <14852634+Eric-Arellano@users.noreply.github.com>

* Update `test_backend_wrong_instance` (#1259)

* wip debug wrong instance test

* enable integration test

* use backend names instead of obj

* Don't block for the first job in a session (#1170)

* don't block if backend not selected

* add reno

* add test

* Add `activated_at` field to session.details() (#1266)

* add activated_at to session.details()

* add reno

* Revert "Don't block for the first job in a session (#1170)" (#1267)

* Revert "Don't block for the first job in a session (#1170)"

This reverts commit f2e24e4.

* keep test

* Prepare release 0.17.0 (#1268)

* update main branch 0.17.1 (#1269)

* Remove test_session_no_backend (#1272)

* Added RuntimeJob.queue_info() method (#1210)

* Added support for RuntimeJob.queueinfo

* Moved methods for consistency with main

* Changed backend_status to job.status

* lint

* update test

---------

Co-authored-by: Kevin Tian <kevin.tian@ibm.com>

* Replace programs with primitives in api docs  (#1281)

* programs -> primitives

* address comment

* Deprecate service.runtime (#1278)

* Deprecate service.runtime

* add reno

* Removed support for qiskitrc file (#1121)

* Removed support for qiskitrc file

* lint

---------

Co-authored-by: Kevin Tian <kevin.tian@ibm.com>

* Add max_time parameter to IBMBackend.open_session() (#1274)

* Added max_time to IBMBackend.open_session.

* Release note

* Changed format of test

* Migrate fake backend base classes (#1270)

Co-authored-by: Kevin Tian <kevin.tian@ibm.com>

* Add Q-CTRL integration tests  (#1173)

* add initial qctrl test file

* add test & decorator

* add tests from Mirko

* Added assertness for preciseness of results

* remove print statements

* move into e2e folder

* setup ci

* Update q-ctrl-tests.yml

* add account test

* add more account tests

* Update test/qctrl/test_qctrl.py

Co-authored-by: Rathish Cholarajan <rathishc24@gmail.com>

* address comments

* update date to 2023

* Update test/qctrl/test_qctrl.py

Co-authored-by: Blake Johnson <blakejohnson04@gmail.com>

* Update test/qctrl/test_qctrl.py

Co-authored-by: Blake Johnson <blakejohnson04@gmail.com>

---------

Co-authored-by: merav-aharoni <merav@il.ibm.com>
Co-authored-by: Rathish Cholarajan <rathishc24@gmail.com>
Co-authored-by: Blake Johnson <blakejohnson04@gmail.com>

* update grover tutorial equation (#1293)

* Add dynamic circuits backend filter (#1291)

* Add dynamic circuits backend filter

* add reno

* switch docs from mathjax to katex (#1301)

Updates the sphinx documentation build to use KaTeX instead of MathJax because the final docs build uses KaTeX. The same change was made in Qiskit in Qiskit/qiskit#11435.

* Remove qiskit.org links (#1302)

* Update session_id docstring (#1304)

* Update provider and qiskit versions (#1305)

* Exclude params on job retrieval by default (#1308)

* exclude params on job retrieval by default

* add reno

* add test

* Reactive the viewcode extension for docs (#1312)

We got source links working in API docs on docs.quantum.ibm.com! See Qiskit/documentation#620. To do this, we need to active `sphinx.ext.viewcode`.

Note that we still plan to improve this implementation in the future to have more precise links by using `sphinx.ext.linkcode`, tracked by Qiskit/documentation#517. This PR is to unblock the first iteration of this source links mechanism.

* Add config files to manifest (#1319)

* Fix pip environment resolution (#1329)

Calling `pip install` multiple times can (deeply unfortunately) allow an
environment to become out-of-sync; `pip` doesn't "remember" the
constraints of previous installation commands.

One of the largest effects here is that doing `pip install -e .`
_followed_ by `pip install git+<qiskit>@main` installs `qiskit-terra`
from the initial installation (via `qiskit==0.45.2`), then installs
`qiskit==1.0.0.dev0` from Git, which is an incompatible environment.
Doing the whole environment resolution in a single `pip install` command
fixes this, as the `qiskit` dependency is correctly resolved to be
_only_ the `1.0.0.dev0` version.

Co-authored-by: Kevin Tian <kevin.tian@ibm.com>

* Use IBM-Provider-vendored pub/sub mechanism (#1328)

This is being removed from Qiskit 1.0, and the IBM Provider is (until
deprecated) taking over brokering the IBM-Runtime-internal events.

Co-authored-by: Kevin Tian <kevin.tian@ibm.com>

* Add transpiler tests (#1323)

* Add transpiler tests

* remove qiskittestcase

* Prepare release 0.18.0 (#1335)

* Update main branch 0.18.1 (#1336)

* Turn off qiskit.org docs deploy (#1340)

* Remove `qiskit.test` (#1292)

* replace qiskit.test.ReferenceCircuits

* replace BaseQiskitTest

* Update qiskit_ibm_runtime/qiskit_runtime_service.py

Co-authored-by: Jessie Yu <jessieyu@us.ibm.com>

* Update qiskit_ibm_runtime/sampler.py

Co-authored-by: Jessie Yu <jessieyu@us.ibm.com>

* Update qiskit_ibm_runtime/session.py

Co-authored-by: Jessie Yu <jessieyu@us.ibm.com>

* Update test/utils.py

Co-authored-by: Jessie Yu <jessieyu@us.ibm.com>

---------

Co-authored-by: Jessie Yu <jessieyu@us.ibm.com>

* Add missing API Refs to docs (#1343)

### Summary
The documentation from the `transpile` and `fake_provider` modules does not appear in the rendered docs in qiskit.org/documentation or docs.quantum-computing.ibm.com.


### Details and comments

Fixes [Qiskit Docs Issue #238](Qiskit/documentation#238)

Replaces PR #1330.

Transpiler Doc files added:

 - qiskit_ibm_runtime.transpiler.passes.html
- qiskit_ibm_provider.transpiler.passes.basis.html
- qiskit_ibm_provider.transpiler.passes.scheduling.ALAPScheduleAnalysis.html
- qiskit_ibm_provider.transpiler.passes.scheduling.ASAPScheduleAnalysis.html
- qiskit_ibm_provider.transpiler.passes.scheduling.BlockBasePadder.html
- qiskit_ibm_provider.transpiler.passes.scheduling.DynamicCircuitInstructionDurations.html
- qiskit_ibm_provider.transpiler.passes.scheduling.html
- qiskit_ibm_provider.transpiler.passes.scheduling.PadDelay.html
- qiskit_ibm_provider.transpiler.passes.scheduling.PadDynamicalDecoupling.html

<details>
<summary> Fake Provider Docs added: </summary>

- qiskit_ibm_runtime.fake_provider.FakeAlmaden.html
- qiskit_ibm_runtime.fake_provider.FakeAlmadenV2.html
- qiskit_ibm_runtime.fake_provider.FakeArmonk.html
- qiskit_ibm_runtime.fake_provider.FakeArmonkV2.html
- qiskit_ibm_runtime.fake_provider.FakeAthens.html
- qiskit_ibm_runtime.fake_provider.FakeAthensV2.html
- qiskit_ibm_runtime.fake_provider.FakeAuckland.html
- qiskit_ibm_runtime.fake_provider.FakeBelem.html
- qiskit_ibm_runtime.fake_provider.FakeBelemV2.html
- qiskit_ibm_runtime.fake_provider.FakeBoeblingen.html
- qiskit_ibm_runtime.fake_provider.FakeBoeblingenV2.html
- qiskit_ibm_runtime.fake_provider.FakeBogota.html
- qiskit_ibm_runtime.fake_provider.FakeBogotaV2.html
- qiskit_ibm_runtime.fake_provider.FakeBrooklyn.html
- qiskit_ibm_runtime.fake_provider.FakeBrooklynV2.html
- qiskit_ibm_runtime.fake_provider.FakeBurlington.html
- qiskit_ibm_runtime.fake_provider.FakeBurlingtonV2.html
- qiskit_ibm_runtime.fake_provider.FakeCairo.html
- qiskit_ibm_runtime.fake_provider.FakeCairoV2.html
- qiskit_ibm_runtime.fake_provider.FakeCambridge.html
- qiskit_ibm_runtime.fake_provider.FakeCambridgeV2.html
- qiskit_ibm_runtime.fake_provider.FakeCasablanca.html
- qiskit_ibm_runtime.fake_provider.FakeCasablancaV2.html
- qiskit_ibm_runtime.fake_provider.FakeEssex.html
- qiskit_ibm_runtime.fake_provider.FakeEssexV2.html
- qiskit_ibm_runtime.fake_provider.FakeGeneva.html
- qiskit_ibm_runtime.fake_provider.FakeGuadalupe.html
- qiskit_ibm_runtime.fake_provider.FakeGuadalupeV2.html
- qiskit_ibm_runtime.fake_provider.FakeHanoi.html
- qiskit_ibm_runtime.fake_provider.FakeHanoiV2.html
- qiskit_ibm_runtime.fake_provider.FakeJakarta.html
- qiskit_ibm_runtime.fake_provider.FakeJakartaV2.html
- qiskit_ibm_runtime.fake_provider.FakeJohannesburg.html
- qiskit_ibm_runtime.fake_provider.FakeJohannesburgV2.html
- qiskit_ibm_runtime.fake_provider.FakeKolkata.html
- qiskit_ibm_runtime.fake_provider.FakeKolkataV2.html
- qiskit_ibm_runtime.fake_provider.FakeLagos.html
- qiskit_ibm_runtime.fake_provider.FakeLagosV2.html
- qiskit_ibm_runtime.fake_provider.FakeLima.html
- qiskit_ibm_runtime.fake_provider.FakeLimaV2.html
- qiskit_ibm_runtime.fake_provider.FakeLondon.html
- qiskit_ibm_runtime.fake_provider.FakeLondonV2.html
- qiskit_ibm_runtime.fake_provider.FakeManhattan.html
- qiskit_ibm_runtime.fake_provider.FakeManhattanV2.html
- qiskit_ibm_runtime.fake_provider.FakeManila.html
- qiskit_ibm_runtime.fake_provider.FakeManilaV2.html
- qiskit_ibm_runtime.fake_provider.FakeMelbourne.html
- qiskit_ibm_runtime.fake_provider.FakeMelbourneV2.html
- qiskit_ibm_runtime.fake_provider.FakeMontreal.html
- qiskit_ibm_runtime.fake_provider.FakeMontrealV2.html
- qiskit_ibm_runtime.fake_provider.FakeMumbai.html
- qiskit_ibm_runtime.fake_provider.FakeMumbaiV2.html
- qiskit_ibm_runtime.fake_provider.FakeNairobi.html
- qiskit_ibm_runtime.fake_provider.FakeNairobiV2.html
- qiskit_ibm_runtime.fake_provider.FakeOslo.html
- qiskit_ibm_runtime.fake_provider.FakeOurense.html
- qiskit_ibm_runtime.fake_provider.FakeOurenseV2.html
- qiskit_ibm_runtime.fake_provider.FakeParis.html
- qiskit_ibm_runtime.fake_provider.FakeParisV2.html
- qiskit_ibm_runtime.fake_provider.FakePerth.html
- qiskit_ibm_runtime.fake_provider.FakePoughkeepsie.html
- qiskit_ibm_runtime.fake_provider.FakePoughkeepsieV2.html
- qiskit_ibm_runtime.fake_provider.FakePrague.html
- qiskit_ibm_runtime.fake_provider.FakeProviderForBackendV2.html
- qiskit_ibm_runtime.fake_provider.FakeProvider.html
- qiskit_ibm_runtime.fake_provider.FakeQuito.html
- qiskit_ibm_runtime.fake_provider.FakeQuitoV2.html
- qiskit_ibm_runtime.fake_provider.FakeRochester.html
- qiskit_ibm_runtime.fake_provider.FakeRochesterV2.html
- qiskit_ibm_runtime.fake_provider.FakeRome.html
- qiskit_ibm_runtime.fake_provider.FakeRomeV2.html
- qiskit_ibm_runtime.fake_provider.FakeRueschlikon.html
- qiskit_ibm_runtime.fake_provider.FakeSantiago.html
- qiskit_ibm_runtime.fake_provider.FakeSantiagoV2.html
- qiskit_ibm_runtime.fake_provider.FakeSherbrooke.html
- qiskit_ibm_runtime.fake_provider.FakeSingapore.html
- qiskit_ibm_runtime.fake_provider.FakeSingaporeV2.html
- qiskit_ibm_runtime.fake_provider.FakeSydney.html
- qiskit_ibm_runtime.fake_provider.FakeSydneyV2.html
- qiskit_ibm_runtime.fake_provider.FakeTenerife.html
- qiskit_ibm_runtime.fake_provider.FakeTokyo.html
- qiskit_ibm_runtime.fake_provider.FakeToronto.html
- qiskit_ibm_runtime.fake_provider.FakeTorontoV2.html
- qiskit_ibm_runtime.fake_provider.FakeValencia.html
- qiskit_ibm_runtime.fake_provider.FakeValenciaV2.html
- qiskit_ibm_runtime.fake_provider.FakeVigo.html
- qiskit_ibm_runtime.fake_provider.FakeVigoV2.html
- qiskit_ibm_runtime.fake_provider.FakeWashington.html
- qiskit_ibm_runtime.fake_provider.FakeWashingtonV2.html
- qiskit_ibm_runtime.fake_provider.FakeYorktown.html
- qiskit_ibm_runtime.fake_provider.FakeYorktownV2.html

</details>

Co-authored-by: Rebecca Dimock <66339736+beckykd@users.noreply.github.com>

* Set use_symengine on qpy generation if symengine is installed (#1355)

This commit sets the use_symengine flag during qpy export used during
job payload generation if symengine is installed. For qiskit <1.0
symengine is a hard dependency on platforms that have support for it
(x86_64, aarch64, and ppc64le linux and macOS) and an optional
requirement on other qiskit supported platforms, and when available it
greatly improves the runtime performance of symbolic expressions in
Qiskit. By default QPY opts for the more compatible sympy representation
of an unbound ParameterExpression as it's maximally compatible, and
means that no matter the environment the payload will be loaded from it
will be able to parse the payload. In QPY version 10 a new flag was
added to the payload definition that enables users to use a native
binary symengine representation of a symbolic expression that is
significantly faster to generate and parse, but it still defaults to
sympy as using this flag limits the compatibility of the payload.
However, for runtime job submission we know that the service always has
symengine available so we should be using this flag for job submission
if the local environment has symengine installed as it will greatly
speed up the serialization of unbound ParameterExpression objects.

In Qiskit 1.0, symengine is promoted to a hard requriment for all
environments and use_symengine=True is the default in Qiskit's qpy
module. But, setting it like this is still a good idea as it will always
be safe to do this, it's just in qiskit 1.0 symengine will always be
installed.

* Fix for unit tests (#1356)

* Run all unit tests

* Import fake providers

* Format

* Fake providers not used in this branch

* Unused import

---------

Co-authored-by: Kevin Tian <kevin.tian@ibm.com>

* Update flaky integration tests (#1359)

* Fix bad Sphinx API doc Provider naming (#1360)

This resulted in the imports being called `qiskit_ibm_provider` rather than `qiskit_ibm_runtime`.

Co-authored-by: Frank Harkins <frankharkins@users.noreply.github.com>

* Merge qiskit-ibm-provider into qiskit-ibm-runtime (#1285)

* initial commit

* more replacements

* more replacements

* add auth/api

* add reno

* add qpy module back

* address comments

* fix docs build

* Update invalid token test (#1367)

* Copy pub/sub code into qiskit-ibm-runtime (#1349)

* Copy pub/sub code into qiskit-ibm-runtime

* fix docs build

* Remove mthree from requirements-dev (#1370)

* Handle Qiskit 1.0 removals (#1363)

* Handle Qiskit 1.0 removals

* Remove removed qiskit modules

* add both qiskit synthesis imports

* fix docs build

* fix lint errors from 1.0.0RC1

* update basicaer import

* Update qiskit_ibm_runtime/fake_provider/fake_backend.py

Co-authored-by: Elena Peña Tapia <57907331+ElePT@users.noreply.github.com>

* address comments

* Update imports & docstrings

---------

Co-authored-by: Elena Peña Tapia <57907331+ElePT@users.noreply.github.com>

* Copy over provider session & remove qiskit-ibm-provider (#1368)

* Move provider's session & remove qiskit-ibm-provider

* fix black

* Handle qpy serialization across versions and delete vendored fork (#1377)

* Handle qpy serialization across versions and delete vendored fork

For the next qiskit-ibm-runtime release it is desired to have it support
both Qiskit 0.45.x/0.46.x and Qiskit 1.0.0. To do this with QPY it means
we need to emit a fixed qpy version of 10 as that's currently the
maximum version the server side can parse. The easiest way to manage
this across versions is actually to rely on Qiskit's qpy module again.
Starting in Qiskit 1.0.0 the qiskit.qpy.dump() function a new kwarg,
version exists to specify the version of qpy emitted. We can use this
to control the rollout of QPY format versions as the server side is
updated. For right now this is fixed to version 10 which is the same as
the QPY format version emitted by 0.45.x and 0.46.0. Because the
versions are the same we can just use qiskit's qpy module moving forward
as either we're on qiskit 0.45.x/0.46.x and will emit version 10 (as there
is no option) or we're on >=1.0.0 and we explicitly set the qpy version
to one that's compatible with the server side.

The qpy internals usage to serialize parameters and parameter
expressions are left in place (although expanded on to include #1355 for
parameter expressions) as an alternative needs to be considered for
this. It is not a good idea to rely on qpy internals and explicitly
private functions to do partial serialization.

This commit also deletes the vendored fork as it's never been included
in a released version of qiskit-ibm-runtime and nothing is using it
anymore.

Related to: #1375

* Fix lint

* Fix lint again

* Run integration tests against Qiskit main (#1376)

* Fix qiskit main integratino tests cron job (#1379)

* Prepare release 0.19.0 (#1380)

* Prepare release 0.19

* add reno stating compatibility

* Update main branch version 0.19.1 (#1382)

* Porting qiskit-ibm-provider/787: Fix `DynamicCircuitInstructionDurations.from_backend` for both `Backend versions` (#1383)

* porting qiskit-ibm-provider/pull/787

* porting qiskit-ibm-provider/pull/787

* black

* oops

* monkey patch Qiskit/qiskit#11727

* black lynt

* mypy

---------

Co-authored-by: Kevin Tian <kevin.tian@ibm.com>

* Cast use_symengine input to a bool (#1385)

* Cast use_symengine input to a bool

This commit works around a bug in Qiskit 0.45.x, 0.46.0, and 1.0.0rc1
with the `use_symengine` flag on `qpy.dump()`. The dump function has a
bug when it receives a truthy value instead of a bool literal that it
will generate a corrupt qpy because of a mismatch between how the
encoding was processed (the encoding is incorrectly set to sympy in the
file header but uses symengine encoding in the actual body of the
circuit.  This is being fixed in Qiskit/qiskit#11730 for 1.0.0, and will
be backported to 0.46.1. But to ensure compatibility with 0.45.x, 0.46.0,
and 1.0.0rc1 while waiting for those releases we can workaround this by
just casting the value to a boolean.

* Fix mypy failures

* Mypy fixes again

* Prepare release 0.19.1 (#1386)

* Update main branch version 0.19.2 (#1388)

* Use barrier labels to define intervals for DD (#1358)

* Add transpiler tests

* Named barrier to select dd intervals

* reno

* consistent pad arguments in PadDelay

* Decouple single_pulse option

* fix docsting

* Add test

* Fix for PadDelay

* format

* line too long

---------

Co-authored-by: kevin-tian <kevin.tian@ibm.com>

* Remove remaining qiskit.org links (#1397)

* Remove remaining qiskit.org links

* Update qiskit_ibm_runtime/provider_session.py

Co-authored-by: Kevin Tian <kt474@cornell.edu>

---------

Co-authored-by: Kevin Tian <kt474@cornell.edu>

* Support Python 3.12 (#1347)

* Support Python 3.12

* update requirments

* update requirements

* Add deprecation policy (#1405)

* add deprecation file

* update guide

* fix wording

Co-authored-by: Kevin Tian <kt474@cornell.edu>

---------

Co-authored-by: Kevin Tian <kt474@cornell.edu>

* Fix scheduling in control flow with instructions of non-uniform durations (#1378)

* Map indices for durations in inner block

* Add test

* Reno

* Fix docs

* Missing docstring

---------

Co-authored-by: Kevin Tian <kevin.tian@ibm.com>

* Add deprecation warning for abstract circuits (#1404)

* Add abstract circuit warning

* add reno

* use correct Sequence import

* unit tests

* Fix docs build with Qiskit 1.0  (#1411)

* fix docs build

* Replace qiskit.tools

* Use POST /sessions endpoint  (#1372)

* wip use post sessions

* address comments

* fix mypy & lint

* use private method

* Add reno

* attempt fix unit tests

* unit tests

* add logic to work with IQP

* remove todo

* Update releasenotes/notes/session-modes-5c22b68620f8d690.yaml

Co-authored-by: Jessie Yu <jessieyu@us.ibm.com>

* Update docstrings, passing mode into payload

* Update unit tests

* address comments

* Pass max_time to /sessions

* unit tests

* integration test

---------

Co-authored-by: Jessie Yu <jessieyu@us.ibm.com>

* Use POST /sessions in backend.run sessions (#1415)

* Use POST /sessions in backend.run sessions

* Add reno

* update tests

* add test_run_after_cancel back

* remove max_time arg from Session

* Add max_time

* Prepare release 0.20.0 (#1418)

* Update main branch version 0.20.1 (#1419)

* Update ISA validation (#1414)

* check coupling map

* restore stack level

* mypy

* remove layout check

* check width

* allow pulse gates

* add release note

* Fix bug with retrieving fake backends  (#1402)

* bug fix w retrieving fake backend

* Move test

* fix merge issues

---------

Co-authored-by: Elena Peña Tapia <57907331+ElePT@users.noreply.github.com>
Co-authored-by: Kevin Tian <kevin.tian@ibm.com>
Co-authored-by: merav-aharoni <merav@il.ibm.com>
Co-authored-by: Salvador de la Puente González <neo.salvador@gmail.com>
Co-authored-by: Eric Arellano <14852634+Eric-Arellano@users.noreply.github.com>
Co-authored-by: Sanket Panda <pandasa123@gmail.com>
Co-authored-by: abbycross <across@us.ibm.com>
Co-authored-by: Kevin Tian <kt474@cornell.edu>
Co-authored-by: Rathish Cholarajan <rathishc24@gmail.com>
Co-authored-by: Blake Johnson <blakejohnson04@gmail.com>
Co-authored-by: Kevin J. Sung <kevjsung@umich.edu>
Co-authored-by: Jake Lishman <jake.lishman@ibm.com>
Co-authored-by: Kaelyn Ferris <43348706+kaelynj@users.noreply.github.com>
Co-authored-by: Rebecca Dimock <66339736+beckykd@users.noreply.github.com>
Co-authored-by: Matthew Treinish <mtreinish@kortar.org>
Co-authored-by: Diego Ristè <10402430+dieris@users.noreply.github.com>
Co-authored-by: Frank Harkins <frankharkins@users.noreply.github.com>
Co-authored-by: Luciano Bello <bel@zurich.ibm.com>
jyu00 added a commit to Qiskit/qiskit-ibm-runtime that referenced this pull request Mar 4, 2024
* Migrate fake backends from `qiskit.providers.fake_provider` (#1140)

* Migrate fake provider

* fix lint

* Only migrate backends and fake_provider file to minimize duplication

* Add reno

* Update snippet to use runtime service

---------

Co-authored-by: Kevin Tian <kevin.tian@ibm.com>

* Fix BYOB job results bytes typing issue  (#1220)

* try/except raw result truncation

* catch typeError

* revert try/except, use response.text

* update unit test

* Fix fake backends integration test (#1225)

* Clean up/fix integration test

* Update test case

* Fix black

* Added deprecation warning when using qiskitrc file (#1219)

* Added deprecation warning when using qiskitrc file

* Fixed bug whereby deprecation warnings cause failure for all 'qiskit*' modules. Changed warning to deprecation warning.

* Release note

* Small grammer fix

* black

---------

Co-authored-by: Kevin Tian <kevin.tian@ibm.com>

* Update session.from_id() (#1163)

* update session.from_id()

* add deprecation warning

* add reno

* Prepare release 0.15.0 (#1226)

* Update main branch 0.16.0 (#1227)

* Revert `Session.from_id 0.15.0` changes   (#1229)

* Revert "Update session.from_id() (#1163)"

This reverts commit 8fa0472.

* add reno

* Prepare release 0.15.1 (#1230)

* Update main branch to 0.16.0 again (#1232)

* Remove all code related to custom programs (#1192)

* initial removal

* cleanup more files

* move result_decoder

* fix lint

* update unit tests

* update integration tests

* more docs changes

* release note

* fix path

---------

Co-authored-by: Jessie Yu <jessieyu@us.ibm.com>

* Make sessions thread safe (#1196)

* Make sessions thread safe.

The lock prevents other threads from sending new jobs to the service
only if the session hasnot been setup yet. I.e.: when sending the
first "session starter job", or root job. After this happens, the code
is left unlocked to allow threads to access the service concurrently.

Error handling is needed to ensure the lock is always released.

* Allow multiple sessions to execute simultaneously

* Make session test more deterministic

---------

Co-authored-by: Kevin Tian <kevin.tian@ibm.com>
Co-authored-by: Jessie Yu <jessieyu@us.ibm.com>

* Instance & channel_strategy validation  (#1233)

* compare cloud instance with channel strategy

* fix unit tests

* error wording

---------

Co-authored-by: Jessie Yu <jessieyu@us.ibm.com>

* Prepare release 0.16.1 (#1239)

* release notes

* fix release

* update to 0.17 (#1240)

* Stop referring to qiskit.org in API docs (#1242)

* Add job.properties() method (#1252)

* Add job.properties() method

* add reno

* Remove non-API docs and translations (#1256)

This is the same as Qiskit/qiskit#11352. Now that qiskit.org/ecosystem/ibm-runtime redirects to docs.quantum.ibm.com, we can simplify the docs. 

See the PR description in Qiskit/qiskit#11352 for details on the motivation for each change. The only difference from Qiskit is that we still keep the tutorials around because learning.quantum.ibm.com uses them.

I used a script with `ripgrep` to confirm that none of the images were in use.

* Raise error if backend retrieved not in current instance  (#1249)

* Error if backend not in instance

* add reno

* update reno

* docs build

* fix docs again

* docs formatting :/

* add integration test

* Update test/integration/test_backend.py

Co-authored-by: merav-aharoni <merav@il.ibm.com>

* Update test/integration/test_backend.py

Co-authored-by: merav-aharoni <merav@il.ibm.com>

---------

Co-authored-by: merav-aharoni <merav@il.ibm.com>

* Fix backend_converter `faulty_qubit` name error (#1257)

* fix backend_converter

* add reno

* Update Tutorial section names (#1241)

* The transpilation tutorial has been updated to use the new runtime transpilation passes, and Batch

* Fix style checker

* Updated names

* Updated section names for transpiled tutorial

* Updated grover

* Fixed consistency

* Final updates

---------

Co-authored-by: Kevin Tian <kevin.tian@ibm.com>

* make test_backend_wrong_instance IQP only (#1258)

* Add pointer to qiskit/documentation issues (#1260)

* add pointer to qiskit/documentation issues

* Update .github/ISSUE_TEMPLATE/config.yml

Co-authored-by: Eric Arellano <14852634+Eric-Arellano@users.noreply.github.com>

* Update CONTRIBUTING.md

Co-authored-by: Eric Arellano <14852634+Eric-Arellano@users.noreply.github.com>

---------

Co-authored-by: Kevin Tian <kt474@cornell.edu>
Co-authored-by: Eric Arellano <14852634+Eric-Arellano@users.noreply.github.com>

* Update `test_backend_wrong_instance` (#1259)

* wip debug wrong instance test

* enable integration test

* use backend names instead of obj

* Don't block for the first job in a session (#1170)

* don't block if backend not selected

* add reno

* add test

* Add `activated_at` field to session.details() (#1266)

* add activated_at to session.details()

* add reno

* Revert "Don't block for the first job in a session (#1170)" (#1267)

* Revert "Don't block for the first job in a session (#1170)"

This reverts commit f2e24e4.

* keep test

* Prepare release 0.17.0 (#1268)

* update main branch 0.17.1 (#1269)

* Remove test_session_no_backend (#1272)

* Added RuntimeJob.queue_info() method (#1210)

* Added support for RuntimeJob.queueinfo

* Moved methods for consistency with main

* Changed backend_status to job.status

* lint

* update test

---------

Co-authored-by: Kevin Tian <kevin.tian@ibm.com>

* Replace programs with primitives in api docs  (#1281)

* programs -> primitives

* address comment

* Deprecate service.runtime (#1278)

* Deprecate service.runtime

* add reno

* Removed support for qiskitrc file (#1121)

* Removed support for qiskitrc file

* lint

---------

Co-authored-by: Kevin Tian <kevin.tian@ibm.com>

* Add max_time parameter to IBMBackend.open_session() (#1274)

* Added max_time to IBMBackend.open_session.

* Release note

* Changed format of test

* Migrate fake backend base classes (#1270)

Co-authored-by: Kevin Tian <kevin.tian@ibm.com>

* Add Q-CTRL integration tests  (#1173)

* add initial qctrl test file

* add test & decorator

* add tests from Mirko

* Added assertness for preciseness of results

* remove print statements

* move into e2e folder

* setup ci

* Update q-ctrl-tests.yml

* add account test

* add more account tests

* Update test/qctrl/test_qctrl.py

Co-authored-by: Rathish Cholarajan <rathishc24@gmail.com>

* address comments

* update date to 2023

* Update test/qctrl/test_qctrl.py

Co-authored-by: Blake Johnson <blakejohnson04@gmail.com>

* Update test/qctrl/test_qctrl.py

Co-authored-by: Blake Johnson <blakejohnson04@gmail.com>

---------

Co-authored-by: merav-aharoni <merav@il.ibm.com>
Co-authored-by: Rathish Cholarajan <rathishc24@gmail.com>
Co-authored-by: Blake Johnson <blakejohnson04@gmail.com>

* update grover tutorial equation (#1293)

* Add dynamic circuits backend filter (#1291)

* Add dynamic circuits backend filter

* add reno

* switch docs from mathjax to katex (#1301)

Updates the sphinx documentation build to use KaTeX instead of MathJax because the final docs build uses KaTeX. The same change was made in Qiskit in Qiskit/qiskit#11435.

* Remove qiskit.org links (#1302)

* Update session_id docstring (#1304)

* Update provider and qiskit versions (#1305)

* Exclude params on job retrieval by default (#1308)

* exclude params on job retrieval by default

* add reno

* add test

* Reactive the viewcode extension for docs (#1312)

We got source links working in API docs on docs.quantum.ibm.com! See Qiskit/documentation#620. To do this, we need to active `sphinx.ext.viewcode`.

Note that we still plan to improve this implementation in the future to have more precise links by using `sphinx.ext.linkcode`, tracked by Qiskit/documentation#517. This PR is to unblock the first iteration of this source links mechanism.

* Add config files to manifest (#1319)

* Fix pip environment resolution (#1329)

Calling `pip install` multiple times can (deeply unfortunately) allow an
environment to become out-of-sync; `pip` doesn't "remember" the
constraints of previous installation commands.

One of the largest effects here is that doing `pip install -e .`
_followed_ by `pip install git+<qiskit>@main` installs `qiskit-terra`
from the initial installation (via `qiskit==0.45.2`), then installs
`qiskit==1.0.0.dev0` from Git, which is an incompatible environment.
Doing the whole environment resolution in a single `pip install` command
fixes this, as the `qiskit` dependency is correctly resolved to be
_only_ the `1.0.0.dev0` version.

Co-authored-by: Kevin Tian <kevin.tian@ibm.com>

* Use IBM-Provider-vendored pub/sub mechanism (#1328)

This is being removed from Qiskit 1.0, and the IBM Provider is (until
deprecated) taking over brokering the IBM-Runtime-internal events.

Co-authored-by: Kevin Tian <kevin.tian@ibm.com>

* Add transpiler tests (#1323)

* Add transpiler tests

* remove qiskittestcase

* Prepare release 0.18.0 (#1335)

* Update main branch 0.18.1 (#1336)

* Turn off qiskit.org docs deploy (#1340)

* Remove `qiskit.test` (#1292)

* replace qiskit.test.ReferenceCircuits

* replace BaseQiskitTest

* Update qiskit_ibm_runtime/qiskit_runtime_service.py

Co-authored-by: Jessie Yu <jessieyu@us.ibm.com>

* Update qiskit_ibm_runtime/sampler.py

Co-authored-by: Jessie Yu <jessieyu@us.ibm.com>

* Update qiskit_ibm_runtime/session.py

Co-authored-by: Jessie Yu <jessieyu@us.ibm.com>

* Update test/utils.py

Co-authored-by: Jessie Yu <jessieyu@us.ibm.com>

---------

Co-authored-by: Jessie Yu <jessieyu@us.ibm.com>

* Add missing API Refs to docs (#1343)

### Summary
The documentation from the `transpile` and `fake_provider` modules does not appear in the rendered docs in qiskit.org/documentation or docs.quantum-computing.ibm.com.


### Details and comments

Fixes [Qiskit Docs Issue #238](Qiskit/documentation#238)

Replaces PR #1330.

Transpiler Doc files added:

 - qiskit_ibm_runtime.transpiler.passes.html
- qiskit_ibm_provider.transpiler.passes.basis.html
- qiskit_ibm_provider.transpiler.passes.scheduling.ALAPScheduleAnalysis.html
- qiskit_ibm_provider.transpiler.passes.scheduling.ASAPScheduleAnalysis.html
- qiskit_ibm_provider.transpiler.passes.scheduling.BlockBasePadder.html
- qiskit_ibm_provider.transpiler.passes.scheduling.DynamicCircuitInstructionDurations.html
- qiskit_ibm_provider.transpiler.passes.scheduling.html
- qiskit_ibm_provider.transpiler.passes.scheduling.PadDelay.html
- qiskit_ibm_provider.transpiler.passes.scheduling.PadDynamicalDecoupling.html

<details>
<summary> Fake Provider Docs added: </summary>

- qiskit_ibm_runtime.fake_provider.FakeAlmaden.html
- qiskit_ibm_runtime.fake_provider.FakeAlmadenV2.html
- qiskit_ibm_runtime.fake_provider.FakeArmonk.html
- qiskit_ibm_runtime.fake_provider.FakeArmonkV2.html
- qiskit_ibm_runtime.fake_provider.FakeAthens.html
- qiskit_ibm_runtime.fake_provider.FakeAthensV2.html
- qiskit_ibm_runtime.fake_provider.FakeAuckland.html
- qiskit_ibm_runtime.fake_provider.FakeBelem.html
- qiskit_ibm_runtime.fake_provider.FakeBelemV2.html
- qiskit_ibm_runtime.fake_provider.FakeBoeblingen.html
- qiskit_ibm_runtime.fake_provider.FakeBoeblingenV2.html
- qiskit_ibm_runtime.fake_provider.FakeBogota.html
- qiskit_ibm_runtime.fake_provider.FakeBogotaV2.html
- qiskit_ibm_runtime.fake_provider.FakeBrooklyn.html
- qiskit_ibm_runtime.fake_provider.FakeBrooklynV2.html
- qiskit_ibm_runtime.fake_provider.FakeBurlington.html
- qiskit_ibm_runtime.fake_provider.FakeBurlingtonV2.html
- qiskit_ibm_runtime.fake_provider.FakeCairo.html
- qiskit_ibm_runtime.fake_provider.FakeCairoV2.html
- qiskit_ibm_runtime.fake_provider.FakeCambridge.html
- qiskit_ibm_runtime.fake_provider.FakeCambridgeV2.html
- qiskit_ibm_runtime.fake_provider.FakeCasablanca.html
- qiskit_ibm_runtime.fake_provider.FakeCasablancaV2.html
- qiskit_ibm_runtime.fake_provider.FakeEssex.html
- qiskit_ibm_runtime.fake_provider.FakeEssexV2.html
- qiskit_ibm_runtime.fake_provider.FakeGeneva.html
- qiskit_ibm_runtime.fake_provider.FakeGuadalupe.html
- qiskit_ibm_runtime.fake_provider.FakeGuadalupeV2.html
- qiskit_ibm_runtime.fake_provider.FakeHanoi.html
- qiskit_ibm_runtime.fake_provider.FakeHanoiV2.html
- qiskit_ibm_runtime.fake_provider.FakeJakarta.html
- qiskit_ibm_runtime.fake_provider.FakeJakartaV2.html
- qiskit_ibm_runtime.fake_provider.FakeJohannesburg.html
- qiskit_ibm_runtime.fake_provider.FakeJohannesburgV2.html
- qiskit_ibm_runtime.fake_provider.FakeKolkata.html
- qiskit_ibm_runtime.fake_provider.FakeKolkataV2.html
- qiskit_ibm_runtime.fake_provider.FakeLagos.html
- qiskit_ibm_runtime.fake_provider.FakeLagosV2.html
- qiskit_ibm_runtime.fake_provider.FakeLima.html
- qiskit_ibm_runtime.fake_provider.FakeLimaV2.html
- qiskit_ibm_runtime.fake_provider.FakeLondon.html
- qiskit_ibm_runtime.fake_provider.FakeLondonV2.html
- qiskit_ibm_runtime.fake_provider.FakeManhattan.html
- qiskit_ibm_runtime.fake_provider.FakeManhattanV2.html
- qiskit_ibm_runtime.fake_provider.FakeManila.html
- qiskit_ibm_runtime.fake_provider.FakeManilaV2.html
- qiskit_ibm_runtime.fake_provider.FakeMelbourne.html
- qiskit_ibm_runtime.fake_provider.FakeMelbourneV2.html
- qiskit_ibm_runtime.fake_provider.FakeMontreal.html
- qiskit_ibm_runtime.fake_provider.FakeMontrealV2.html
- qiskit_ibm_runtime.fake_provider.FakeMumbai.html
- qiskit_ibm_runtime.fake_provider.FakeMumbaiV2.html
- qiskit_ibm_runtime.fake_provider.FakeNairobi.html
- qiskit_ibm_runtime.fake_provider.FakeNairobiV2.html
- qiskit_ibm_runtime.fake_provider.FakeOslo.html
- qiskit_ibm_runtime.fake_provider.FakeOurense.html
- qiskit_ibm_runtime.fake_provider.FakeOurenseV2.html
- qiskit_ibm_runtime.fake_provider.FakeParis.html
- qiskit_ibm_runtime.fake_provider.FakeParisV2.html
- qiskit_ibm_runtime.fake_provider.FakePerth.html
- qiskit_ibm_runtime.fake_provider.FakePoughkeepsie.html
- qiskit_ibm_runtime.fake_provider.FakePoughkeepsieV2.html
- qiskit_ibm_runtime.fake_provider.FakePrague.html
- qiskit_ibm_runtime.fake_provider.FakeProviderForBackendV2.html
- qiskit_ibm_runtime.fake_provider.FakeProvider.html
- qiskit_ibm_runtime.fake_provider.FakeQuito.html
- qiskit_ibm_runtime.fake_provider.FakeQuitoV2.html
- qiskit_ibm_runtime.fake_provider.FakeRochester.html
- qiskit_ibm_runtime.fake_provider.FakeRochesterV2.html
- qiskit_ibm_runtime.fake_provider.FakeRome.html
- qiskit_ibm_runtime.fake_provider.FakeRomeV2.html
- qiskit_ibm_runtime.fake_provider.FakeRueschlikon.html
- qiskit_ibm_runtime.fake_provider.FakeSantiago.html
- qiskit_ibm_runtime.fake_provider.FakeSantiagoV2.html
- qiskit_ibm_runtime.fake_provider.FakeSherbrooke.html
- qiskit_ibm_runtime.fake_provider.FakeSingapore.html
- qiskit_ibm_runtime.fake_provider.FakeSingaporeV2.html
- qiskit_ibm_runtime.fake_provider.FakeSydney.html
- qiskit_ibm_runtime.fake_provider.FakeSydneyV2.html
- qiskit_ibm_runtime.fake_provider.FakeTenerife.html
- qiskit_ibm_runtime.fake_provider.FakeTokyo.html
- qiskit_ibm_runtime.fake_provider.FakeToronto.html
- qiskit_ibm_runtime.fake_provider.FakeTorontoV2.html
- qiskit_ibm_runtime.fake_provider.FakeValencia.html
- qiskit_ibm_runtime.fake_provider.FakeValenciaV2.html
- qiskit_ibm_runtime.fake_provider.FakeVigo.html
- qiskit_ibm_runtime.fake_provider.FakeVigoV2.html
- qiskit_ibm_runtime.fake_provider.FakeWashington.html
- qiskit_ibm_runtime.fake_provider.FakeWashingtonV2.html
- qiskit_ibm_runtime.fake_provider.FakeYorktown.html
- qiskit_ibm_runtime.fake_provider.FakeYorktownV2.html

</details>

Co-authored-by: Rebecca Dimock <66339736+beckykd@users.noreply.github.com>

* Set use_symengine on qpy generation if symengine is installed (#1355)

This commit sets the use_symengine flag during qpy export used during
job payload generation if symengine is installed. For qiskit <1.0
symengine is a hard dependency on platforms that have support for it
(x86_64, aarch64, and ppc64le linux and macOS) and an optional
requirement on other qiskit supported platforms, and when available it
greatly improves the runtime performance of symbolic expressions in
Qiskit. By default QPY opts for the more compatible sympy representation
of an unbound ParameterExpression as it's maximally compatible, and
means that no matter the environment the payload will be loaded from it
will be able to parse the payload. In QPY version 10 a new flag was
added to the payload definition that enables users to use a native
binary symengine representation of a symbolic expression that is
significantly faster to generate and parse, but it still defaults to
sympy as using this flag limits the compatibility of the payload.
However, for runtime job submission we know that the service always has
symengine available so we should be using this flag for job submission
if the local environment has symengine installed as it will greatly
speed up the serialization of unbound ParameterExpression objects.

In Qiskit 1.0, symengine is promoted to a hard requriment for all
environments and use_symengine=True is the default in Qiskit's qpy
module. But, setting it like this is still a good idea as it will always
be safe to do this, it's just in qiskit 1.0 symengine will always be
installed.

* Fix for unit tests (#1356)

* Run all unit tests

* Import fake providers

* Format

* Fake providers not used in this branch

* Unused import

---------

Co-authored-by: Kevin Tian <kevin.tian@ibm.com>

* Update flaky integration tests (#1359)

* Fix bad Sphinx API doc Provider naming (#1360)

This resulted in the imports being called `qiskit_ibm_provider` rather than `qiskit_ibm_runtime`.

Co-authored-by: Frank Harkins <frankharkins@users.noreply.github.com>

* Merge qiskit-ibm-provider into qiskit-ibm-runtime (#1285)

* initial commit

* more replacements

* more replacements

* add auth/api

* add reno

* add qpy module back

* address comments

* fix docs build

* Update invalid token test (#1367)

* Copy pub/sub code into qiskit-ibm-runtime (#1349)

* Copy pub/sub code into qiskit-ibm-runtime

* fix docs build

* Remove mthree from requirements-dev (#1370)

* Handle Qiskit 1.0 removals (#1363)

* Handle Qiskit 1.0 removals

* Remove removed qiskit modules

* add both qiskit synthesis imports

* fix docs build

* fix lint errors from 1.0.0RC1

* update basicaer import

* Update qiskit_ibm_runtime/fake_provider/fake_backend.py

Co-authored-by: Elena Peña Tapia <57907331+ElePT@users.noreply.github.com>

* address comments

* Update imports & docstrings

---------

Co-authored-by: Elena Peña Tapia <57907331+ElePT@users.noreply.github.com>

* Copy over provider session & remove qiskit-ibm-provider (#1368)

* Move provider's session & remove qiskit-ibm-provider

* fix black

* Handle qpy serialization across versions and delete vendored fork (#1377)

* Handle qpy serialization across versions and delete vendored fork

For the next qiskit-ibm-runtime release it is desired to have it support
both Qiskit 0.45.x/0.46.x and Qiskit 1.0.0. To do this with QPY it means
we need to emit a fixed qpy version of 10 as that's currently the
maximum version the server side can parse. The easiest way to manage
this across versions is actually to rely on Qiskit's qpy module again.
Starting in Qiskit 1.0.0 the qiskit.qpy.dump() function a new kwarg,
version exists to specify the version of qpy emitted. We can use this
to control the rollout of QPY format versions as the server side is
updated. For right now this is fixed to version 10 which is the same as
the QPY format version emitted by 0.45.x and 0.46.0. Because the
versions are the same we can just use qiskit's qpy module moving forward
as either we're on qiskit 0.45.x/0.46.x and will emit version 10 (as there
is no option) or we're on >=1.0.0 and we explicitly set the qpy version
to one that's compatible with the server side.

The qpy internals usage to serialize parameters and parameter
expressions are left in place (although expanded on to include #1355 for
parameter expressions) as an alternative needs to be considered for
this. It is not a good idea to rely on qpy internals and explicitly
private functions to do partial serialization.

This commit also deletes the vendored fork as it's never been included
in a released version of qiskit-ibm-runtime and nothing is using it
anymore.

Related to: #1375

* Fix lint

* Fix lint again

* Run integration tests against Qiskit main (#1376)

* Fix qiskit main integratino tests cron job (#1379)

* Prepare release 0.19.0 (#1380)

* Prepare release 0.19

* add reno stating compatibility

* Update main branch version 0.19.1 (#1382)

* Porting qiskit-ibm-provider/787: Fix `DynamicCircuitInstructionDurations.from_backend` for both `Backend versions` (#1383)

* porting qiskit-ibm-provider/pull/787

* porting qiskit-ibm-provider/pull/787

* black

* oops

* monkey patch Qiskit/qiskit#11727

* black lynt

* mypy

---------

Co-authored-by: Kevin Tian <kevin.tian@ibm.com>

* Cast use_symengine input to a bool (#1385)

* Cast use_symengine input to a bool

This commit works around a bug in Qiskit 0.45.x, 0.46.0, and 1.0.0rc1
with the `use_symengine` flag on `qpy.dump()`. The dump function has a
bug when it receives a truthy value instead of a bool literal that it
will generate a corrupt qpy because of a mismatch between how the
encoding was processed (the encoding is incorrectly set to sympy in the
file header but uses symengine encoding in the actual body of the
circuit.  This is being fixed in Qiskit/qiskit#11730 for 1.0.0, and will
be backported to 0.46.1. But to ensure compatibility with 0.45.x, 0.46.0,
and 1.0.0rc1 while waiting for those releases we can workaround this by
just casting the value to a boolean.

* Fix mypy failures

* Mypy fixes again

* Prepare release 0.19.1 (#1386)

* Update main branch version 0.19.2 (#1388)

* Use barrier labels to define intervals for DD (#1358)

* Add transpiler tests

* Named barrier to select dd intervals

* reno

* consistent pad arguments in PadDelay

* Decouple single_pulse option

* fix docsting

* Add test

* Fix for PadDelay

* format

* line too long

---------

Co-authored-by: kevin-tian <kevin.tian@ibm.com>

* Remove remaining qiskit.org links (#1397)

* Remove remaining qiskit.org links

* Update qiskit_ibm_runtime/provider_session.py

Co-authored-by: Kevin Tian <kt474@cornell.edu>

---------

Co-authored-by: Kevin Tian <kt474@cornell.edu>

* Support Python 3.12 (#1347)

* Support Python 3.12

* update requirments

* update requirements

* Add deprecation policy (#1405)

* add deprecation file

* update guide

* fix wording

Co-authored-by: Kevin Tian <kt474@cornell.edu>

---------

Co-authored-by: Kevin Tian <kt474@cornell.edu>

* Fix scheduling in control flow with instructions of non-uniform durations (#1378)

* Map indices for durations in inner block

* Add test

* Reno

* Fix docs

* Missing docstring

---------

Co-authored-by: Kevin Tian <kevin.tian@ibm.com>

* Add deprecation warning for abstract circuits (#1404)

* Add abstract circuit warning

* add reno

* use correct Sequence import

* unit tests

* Fix docs build with Qiskit 1.0  (#1411)

* fix docs build

* Replace qiskit.tools

* Use POST /sessions endpoint  (#1372)

* wip use post sessions

* address comments

* fix mypy & lint

* use private method

* Add reno

* attempt fix unit tests

* unit tests

* add logic to work with IQP

* remove todo

* Update releasenotes/notes/session-modes-5c22b68620f8d690.yaml

Co-authored-by: Jessie Yu <jessieyu@us.ibm.com>

* Update docstrings, passing mode into payload

* Update unit tests

* address comments

* Pass max_time to /sessions

* unit tests

* integration test

---------

Co-authored-by: Jessie Yu <jessieyu@us.ibm.com>

* Use POST /sessions in backend.run sessions (#1415)

* Use POST /sessions in backend.run sessions

* Add reno

* update tests

* add test_run_after_cancel back

* remove max_time arg from Session

* Add max_time

* Prepare release 0.20.0 (#1418)

* Update main branch version 0.20.1 (#1419)

* Update ISA validation (#1414)

* check coupling map

* restore stack level

* mypy

* remove layout check

* check width

* allow pulse gates

* add release note

* Fix bug with retrieving fake backends  (#1402)

* bug fix w retrieving fake backend

* Move test

* Update sessions mode release note (#1430)

* Add warning if no backend provided on cloud channel (#1425)

* add warning if no backend provided

* add test and reno

* Update msg & add to base_primitive

* Update reno

* Update releasenotes/notes/require-cloud-backend-38a74144347c735d.yaml

Co-authored-by: Jessie Yu <jessieyu@us.ibm.com>

---------

Co-authored-by: Jessie Yu <jessieyu@us.ibm.com>

* Fix missing releases notes before Runtime 0.9 (#1434)

Even though we had the release note files, Reno was not including them.

* Use sphinx.ext.linkcode for more precise source code links (#1431)

* added .idea to .gitignore for Pycharm

* switched sphinx-ext-viewcode for sphinx-ext-linkcode

* remove leftover code from Azure

Co-authored-by: Eric Arellano <14852634+Eric-Arellano@users.noreply.github.com>

* Update tox.ini

* remove leftover code from Azure part 2

Co-authored-by: Eric Arellano <14852634+Eric-Arellano@users.noreply.github.com>

* change dashes to underscores

Co-authored-by: Eric Arellano <14852634+Eric-Arellano@users.noreply.github.com>

* switch from qiskit to qiskit_ibm_runtime

Co-authored-by: Eric Arellano <14852634+Eric-Arellano@users.noreply.github.com>

* remove leftover code from Azure part 3

Co-authored-by: Eric Arellano <14852634+Eric-Arellano@users.noreply.github.com>

* final updates to determine_github_branch method

Co-authored-by: Eric Arellano <14852634+Eric-Arellano@users.noreply.github.com>

* cha

Co-authored-by: Eric Arellano <14852634+Eric-Arellano@users.noreply.github.com>

* added colon

* Fix issue with inherited methods

---------

Co-authored-by: Eric Arellano <14852634+Eric-Arellano@users.noreply.github.com>
Co-authored-by: Kevin Tian <kevin.tian@ibm.com>

* Update deprecated actions in workflows (#1439)

### Summary
In recent PRs including my PR #1431, the CI has been throwing several errors due to old versions of actions that are using node12 or node16 instead of node20. I updated the actions to use the latest versions which should eliminate the CI warnings.

* Fix deprecated `upload-artifact` GitHub action (#1441)

* Fix bad tox.ini passenv setting (#1445)

See Qiskit/qiskit-ibm-provider#825 for context.

* Handle control flow instructions in Target generation (#1443)

* Handle control flow instructions in Target generation

This commit updates the convert_to_target() function that is used to
convert the API response objects used to describe a backend and generate
a Qiskit Target object from that to properly handle control flow
instructions. The supported control flow instructions are listed in the
`supported_instructions` field of the configuration payload. [1] This
commit updates the logic to look for the presence of known control flow
instruction names in that field and add them as appropriate to the
target as global variadic instructions to indicate to Qiskit's
transpiler and other Target object users that the backend supports the
instructions.

[1] https://github.com/Qiskit/ibm-quantum-schemas/blob/0231221082ec722cc31db09c0b41a25f441ac338/schemas/backend_configuration_schema.json#L165-L170

* Add release note

---------

Co-authored-by: Jessie Yu <jessieyu@us.ibm.com>

* Update backend() type hint to BackendV2 (#1442)

Co-authored-by: Jessie Yu <jessieyu@us.ibm.com>

* Updates to tutorials for 1.0 + ISA changes (#1408)

* A majority of these tutorials are already 1.0 ready, but were re-run to double-check

Additional changes include fixes for the ISA changes in #794

* fix black/lint

* docs build

* fix docs build again

* docs build

---------

Co-authored-by: Kevin Tian <kevin.tian@ibm.com>

* Migrate from `pkg_resources` to `importlib.metadata` (#1449)

PR #1347 added `setuptools` to `requirements-dev.txt` in an effort
to make `qiskit-ibm-runtime` work with Python 3.12.  However,
`qiskit_ibm_runtime/api/session.py` actually imports `pkg_resources`,
which is provided by setuptools, so really setuptools should have been
added to [`REQUIREMENTS`](https://github.com/Qiskit/qiskit-ibm-runtime/blob/e152d122782959a04ebf2330f776d4c4e309ad14/setup.py#L21)
in `setup.py` so that it is installed automatically for any downstream
users of Qiskit Runtime, too.

Better yet, however, is to drop this explicit dependency on setuptools,
since [`pkg_resources` is deprecated](https://setuptools.pypa.io/en/latest/pkg_resources.html)
in favor of `importlib`.  Hence, this PR migrates from `pkg_resources`
to `importlib.metadata` (there are a few more words about this
[here](googleapis/python-api-core#27 (comment))).

My investigation into this was prompted by us trying to add
Python 3.12 support to the circuit-knitting-toolbox
(Qiskit/qiskit-addon-cutting#429),
and seeing CI errors prompted by `qiskit-ibm-runtime`'s importing
of `pkg_resources`.

Co-authored-by: Kevin Tian <kevin.tian@ibm.com>

* Add fake backends for newer IBM backends (#1440)

* Add fake backends for newer IBM backends

This commit adds news fake backend classes for the following newer IBM
backends: Algiers, Brisbane, Cusco, Kawasaki, Kyoto, Osaka, Peekskill, Quebec,
and Torino. This was done using a modified version of the qiskit script
to update backends [1] (to use qiskit-ibm-runtime instead of
qiskit-ibmq-provider). There is a standalone script adding this
functionality for this repo in #1263.

[1] https://github.com/Qiskit/qiskit/blob/stable/0.46/tools/update_fake_backends.py

Fixes #1421

* Remove unused import

* Add new backends to FakeProviderForBackendV2 too

* Don't forget FakeKyiv in docs or provider class

---------

Co-authored-by: Kevin Tian <kevin.tian@ibm.com>

* Run q-ctrl tests nightly (#1452)

* Raise if abstract circuits are used (#1437)

* support dynamic circuits

* raise for abstract circuits

* lint

* fix test

* remove hard coded instructions

* check target is not none

* lint

* fix test

* check for error not warning

* bypass simulator

* fix merge issues

* delete extra line

---------

Co-authored-by: Elena Peña Tapia <57907331+ElePT@users.noreply.github.com>
Co-authored-by: Kevin Tian <kevin.tian@ibm.com>
Co-authored-by: merav-aharoni <merav@il.ibm.com>
Co-authored-by: Salvador de la Puente González <neo.salvador@gmail.com>
Co-authored-by: Eric Arellano <14852634+Eric-Arellano@users.noreply.github.com>
Co-authored-by: Sanket Panda <pandasa123@gmail.com>
Co-authored-by: abbycross <across@us.ibm.com>
Co-authored-by: Kevin Tian <kt474@cornell.edu>
Co-authored-by: Rathish Cholarajan <rathishc24@gmail.com>
Co-authored-by: Blake Johnson <blakejohnson04@gmail.com>
Co-authored-by: Kevin J. Sung <kevjsung@umich.edu>
Co-authored-by: Jake Lishman <jake.lishman@ibm.com>
Co-authored-by: Kaelyn Ferris <43348706+kaelynj@users.noreply.github.com>
Co-authored-by: Rebecca Dimock <66339736+beckykd@users.noreply.github.com>
Co-authored-by: Matthew Treinish <mtreinish@kortar.org>
Co-authored-by: Diego Ristè <10402430+dieris@users.noreply.github.com>
Co-authored-by: Frank Harkins <frankharkins@users.noreply.github.com>
Co-authored-by: Luciano Bello <bel@zurich.ibm.com>
Co-authored-by: melechlapson <melechlapson@yahoo.com>
Co-authored-by: melechlapson <Melech.Lapson@ibm.com>
Co-authored-by: Sanket Panda <sanket@ibm.com>
Co-authored-by: Jim Garrison <garrison@ibm.com>
frankharkins pushed a commit to frankharkins/documentation that referenced this pull request Jul 22, 2024
Implements Qiskit#454 for
projects that are using `sphinx.ext.viewcode`. All 3 of our projects
were historically using it until I turned it off after removing
qiskit.org, so the historical API docs are good to go. I'll restore it
for current versions of these projects and regenerate the docs.

This implementation is not a perfect implementation:

1. The visual design is a little awkward, especially the lack of
padding. This can be improved via
Qiskit#518

<img width="571" alt="Screenshot 2024-01-11 at 12 28 07 PM"
src="https://github.com/Qiskit/documentation/assets/14852634/2d915b94-ec48-445a-a174-ace628655b4b">

2. The link only takes you to the overall code page, not the specific
lines. This could be improved via
Qiskit#517.

But it's good enough to not block on these improvements.

This PR regenerates all Runtime historical versions, but not any current
versions nor Qiskit historical versions.

## How source code URLs are determined

`sphinx.ext.viewcode` embeds a copy of every Python file used in API
docs and uses internal relative links like
`../modules/qiskit_ibm_runtime/ibm_backend.html`. They correspond to
Python files we can be confident exist. We transform those relative
links into GitHub links here:


https://github.com/Qiskit/documentation/blob/486afd9b16be52dfedf63cdd357708884c99e110/scripts/lib/api/processHtml.ts#L94-L105


https://github.com/Qiskit/documentation/blob/486afd9b16be52dfedf63cdd357708884c99e110/scripts/lib/api/processHtml.ts#L163-L183

Our links assume that there is a branch called
`stable/<versionWithoutPatch` in GitHub, like `stable/0.8`.

## Replacing `[source]` with `GitHub ↗︎`

We remove the original link from Sphinx and replace it with our own.
This is important so that the link is not included in the `<code>` HTML
element incorrectly. It also allows us to set a custom link label and
`title` (the text when highlighting).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Archived in project
Development

Successfully merging this pull request may close these issues.

2 participants