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 interactive CLI to save user account #2066

Open
wants to merge 32 commits into
base: main
Choose a base branch
from

Conversation

frankharkins
Copy link
Member

@frankharkins frankharkins commented Dec 2, 2024

Summary

Closes #2054.

This PR adds an interactive command-line interface (CLI) that guides users through saving their account to disk. This should be easier for users as they can just run one command and be guided through the relevant choices, and it should be more secure as they're discouraged from storing their token in code they might share.

With qiskit-ibm-runtime installed, users will be able to run the following command to start the CLI.

qiskit-ibm-runtime save-account

This should also be compatible with pipx run, so users will be able to run pipx run qiskit-ibm-runtime save-account from any environment.

Examples

Here's a screenshot of me saving my account correctly.

Screenshot 2024-12-02 at 20 35 29

Here's the output of --help:

(.venv) ~ $ qiskit-ibm-runtime --help      
usage: qiskit-ibm-runtime [-h] {save-account} ...

Scripts for the Qiskit IBM Runtime Python package

options:
  -h, --help      show this help message and exit

Scripts:
  This package supports the following scripts:

  {save-account}
    save-account  Interactive command-line interface to save your account locally.

Questions

What should I add to the documentation? I don't think it belongs in the API documentation in this repo as we don't want users to import these functions. Maybe we can add a note under QiskitRuntimeService.save_account recommending this instead? When released, we can update the guides.

@frankharkins frankharkins marked this pull request as ready for review December 2, 2024 21:18
Copy link
Collaborator

@Eric-Arellano Eric-Arellano left a comment

Choose a reason for hiding this comment

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

This is lovely!

qiskit_ibm_runtime/_cli.py Outdated Show resolved Hide resolved
qiskit_ibm_runtime/_cli.py Outdated Show resolved Hide resolved
qiskit_ibm_runtime/_cli.py Outdated Show resolved Hide resolved
qiskit_ibm_runtime/_cli.py Outdated Show resolved Hide resolved
qiskit_ibm_runtime/_cli.py Show resolved Hide resolved
qiskit_ibm_runtime/_cli.py Outdated Show resolved Hide resolved
qiskit_ibm_runtime/_cli.py Outdated Show resolved Hide resolved
qiskit_ibm_runtime/_cli.py Outdated Show resolved Hide resolved
qiskit_ibm_runtime/_cli.py Outdated Show resolved Hide resolved
test/unit/test_cli.py Show resolved Hide resolved
frankharkins and others added 11 commits December 5, 2024 13:29
Co-authored-by: Eric Arellano <14852634+Eric-Arellano@users.noreply.github.com>
Needs to be above SaveAccountCLI so it's defined when we use it in type
hints. I did this in a separate commit to make the changes clearer.
Copy link
Collaborator

@Eric-Arellano Eric-Arellano left a comment

Choose a reason for hiding this comment

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

This looks great from my perspective!

qiskit_ibm_runtime/_cli.py Show resolved Hide resolved
qiskit_ibm_runtime/_cli.py Show resolved Hide resolved
qiskit_ibm_runtime/_cli.py Outdated Show resolved Hide resolved
qiskit_ibm_runtime/_cli.py Outdated Show resolved Hide resolved
qiskit_ibm_runtime/_cli.py Outdated Show resolved Hide resolved
qiskit_ibm_runtime/_cli.py Outdated Show resolved Hide resolved
qiskit_ibm_runtime/_cli.py Show resolved Hide resolved
qiskit_ibm_runtime/_cli.py Show resolved Hide resolved
frankharkins and others added 3 commits December 18, 2024 09:30
So we see the full docstring when tests fail
Co-authored-by: Eric Arellano <14852634+Eric-Arellano@users.noreply.github.com>
Co-authored-by: Eric Arellano <14852634+Eric-Arellano@users.noreply.github.com>
@frankharkins frankharkins requested review from kt474 and jyu00 December 18, 2024 17:58
@kt474
Copy link
Member

kt474 commented Dec 18, 2024

Thanks @frankharkins, this looks great! I think for the documentation we should update the docstring in save_account and also add a release note explaining the purpose of the CLI and how to use it.

I was testing the tool and it works well with my IQP production accounts but it didn't seem to work for staging accounts - I'm guessing this is intended because external users won't have staging accounts?

I was also running into issues with trying to save a cloud account:
Screenshot 2024-12-18 at 5 48 50 PM

There may be an issue with how the cloud instances are returned.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Consider CLI for saving account
3 participants