qbraid-cli 0.9.5__tar.gz → 0.9.6__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of qbraid-cli might be problematic. Click here for more details.
- {qbraid_cli-0.9.5/qbraid_cli.egg-info → qbraid_cli-0.9.6}/PKG-INFO +1 -1
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/pyproject.toml +1 -1
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/qbraid_cli/_version.py +2 -2
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/qbraid_cli/configure/app.py +60 -2
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6/qbraid_cli.egg-info}/PKG-INFO +1 -1
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/qbraid_cli.egg-info/SOURCES.txt +1 -0
- qbraid_cli-0.9.6/tests/configure/test_configure_commands.py +91 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/.env.example +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/.github/workflows/bump-version.yml +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/.github/workflows/docs-pr.yml +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/.github/workflows/docs.yml +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/.github/workflows/format.yml +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/.github/workflows/main.yml +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/.github/workflows/pre-release.yml +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/.github/workflows/publish.yml +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/.github/workflows/tag-on-merge.yml +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/.gitignore +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/.readthedocs.yml +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/CONTRIBUTING.md +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/LICENSE +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/MANIFEST.IN +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/Makefile +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/README.md +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/docs/Makefile +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/docs/_static/favicon.ico +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/docs/_static/logo.png +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/docs/_static/style/custom.css +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/docs/_static/style/s4defs-roles.css +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/docs/conf.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/docs/index.rst +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/docs/make.bat +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/docs/requirements.txt +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/qbraid_cli/__init__.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/qbraid_cli/account/__init__.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/qbraid_cli/account/app.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/qbraid_cli/admin/__init__.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/qbraid_cli/admin/app.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/qbraid_cli/admin/headers.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/qbraid_cli/admin/validation.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/qbraid_cli/chat/__init__.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/qbraid_cli/chat/app.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/qbraid_cli/configure/__init__.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/qbraid_cli/configure/actions.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/qbraid_cli/devices/__init__.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/qbraid_cli/devices/app.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/qbraid_cli/devices/validation.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/qbraid_cli/envs/__init__.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/qbraid_cli/envs/activate.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/qbraid_cli/envs/app.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/qbraid_cli/envs/create.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/qbraid_cli/envs/data_handling.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/qbraid_cli/exceptions.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/qbraid_cli/files/__init__.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/qbraid_cli/files/app.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/qbraid_cli/handlers.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/qbraid_cli/jobs/__init__.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/qbraid_cli/jobs/app.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/qbraid_cli/jobs/toggle_braket.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/qbraid_cli/jobs/validation.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/qbraid_cli/kernels/__init__.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/qbraid_cli/kernels/app.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/qbraid_cli/main.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/qbraid_cli/pip/__init__.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/qbraid_cli/pip/app.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/qbraid_cli/pip/hooks.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/qbraid_cli/py.typed +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/qbraid_cli.egg-info/dependency_links.txt +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/qbraid_cli.egg-info/entry_points.txt +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/qbraid_cli.egg-info/requires.txt +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/qbraid_cli.egg-info/top_level.txt +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/setup.cfg +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/tests/__init__.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/tests/account/__init__.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/tests/account/test_account_credits.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/tests/admin/test_headers.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/tests/configure/__init__.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/tests/configure/test_configure_prompt_for_config.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/tests/configure/test_configure_set.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/tests/configure/test_configure_validate_input.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/tests/conftest.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/tests/devices/__init__.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/tests/devices/test_devices_list.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/tests/devices/test_devices_validations.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/tests/envs/__init__.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/tests/envs/test_envs_activate.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/tests/envs/test_envs_activate_find_shell_rc.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/tests/envs/test_envs_activate_print_command.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/tests/envs/test_envs_activate_pyenv.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/tests/envs/test_envs_create_from_yaml.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/tests/envs/test_envs_list.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/tests/envs/test_envs_remove.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/tests/files/__init__.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/tests/files/test_files_commands.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/tests/jobs/__init__.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/tests/jobs/test_jobs_disable.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/tests/jobs/test_jobs_enable.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/tests/jobs/test_jobs_list.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/tests/jobs/test_jobs_state.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/tests/jobs/test_jobs_toggle_braket_confirm.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/tests/jobs/test_jobs_toggle_braket_disable.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/tests/jobs/test_jobs_toggle_braket_enable.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/tests/jobs/test_jobs_toggle_braket_get_data.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/tests/jobs/test_jobs_validate_get_state.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/tests/jobs/test_jobs_validate_handle_state.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/tests/jobs/test_jobs_validate_library.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/tests/kernels/__init__.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/tests/kernels/test_kernels_list.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/tests/resources/envs/correct.yaml +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/tests/resources/envs/icon.png +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/tests/resources/envs/incorrect.yaml +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/tools/bump_version.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/tools/create_dev_build.sh +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/tools/install_wheel_extras.sh +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/tools/split_md.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/tools/split_rst.py +0 -0
- {qbraid_cli-0.9.5 → qbraid_cli-0.9.6}/tools/stamp_pre_release.py +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "qbraid-cli"
|
|
7
|
-
version = "0.9.
|
|
7
|
+
version = "0.9.6"
|
|
8
8
|
description = "Command Line Interface for interacting with all parts of the qBraid platform."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
authors = [{ name = "qBraid Development Team", email = "contact@qbraid.com" }]
|
|
@@ -12,5 +12,5 @@ __version__: str
|
|
|
12
12
|
__version_tuple__: VERSION_TUPLE
|
|
13
13
|
version_tuple: VERSION_TUPLE
|
|
14
14
|
|
|
15
|
-
__version__ = version = '0.1.dev1+
|
|
16
|
-
__version_tuple__ = version_tuple = (0, 1, 'dev1', '
|
|
15
|
+
__version__ = version = '0.1.dev1+g808eaf0'
|
|
16
|
+
__version_tuple__ = version_tuple = (0, 1, 'dev1', 'g808eaf0')
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright (c)
|
|
1
|
+
# Copyright (c) 2025, qBraid Development Team
|
|
2
2
|
# All rights reserved.
|
|
3
3
|
|
|
4
4
|
"""
|
|
@@ -7,7 +7,9 @@ Module defining commands in the 'qbraid configure' namespace.
|
|
|
7
7
|
"""
|
|
8
8
|
|
|
9
9
|
import typer
|
|
10
|
+
from rich import box
|
|
10
11
|
from rich.console import Console
|
|
12
|
+
from rich.table import Table
|
|
11
13
|
|
|
12
14
|
from qbraid_cli.configure.actions import default_action
|
|
13
15
|
|
|
@@ -36,7 +38,7 @@ def configure(ctx: typer.Context):
|
|
|
36
38
|
def configure_set(
|
|
37
39
|
name: str = typer.Argument(..., help="Config name"),
|
|
38
40
|
value: str = typer.Argument(..., help="Config value"),
|
|
39
|
-
profile: str = typer.Option("default", help="Profile name"),
|
|
41
|
+
profile: str = typer.Option("default", "--profile", "-p", help="Profile name"),
|
|
40
42
|
):
|
|
41
43
|
"""Set configuration value in qbraidrc file."""
|
|
42
44
|
# pylint: disable-next=import-outside-toplevel
|
|
@@ -53,6 +55,62 @@ def configure_set(
|
|
|
53
55
|
typer.echo("Configuration updated successfully.")
|
|
54
56
|
|
|
55
57
|
|
|
58
|
+
@configure_app.command(name="get")
|
|
59
|
+
def configure_get(
|
|
60
|
+
name: str = typer.Argument(..., help="Config name"),
|
|
61
|
+
profile: str = typer.Option("default", "--profile", "-p", help="Profile name"),
|
|
62
|
+
):
|
|
63
|
+
"""Get configuration value from qbraidrc file."""
|
|
64
|
+
# pylint: disable-next=import-outside-toplevel
|
|
65
|
+
from qbraid_core.config import load_config
|
|
66
|
+
|
|
67
|
+
config = load_config()
|
|
68
|
+
|
|
69
|
+
if profile not in config:
|
|
70
|
+
typer.echo(f"Profile '{profile}' not found in configuration.")
|
|
71
|
+
raise typer.Exit(1)
|
|
72
|
+
|
|
73
|
+
if name not in config[profile]:
|
|
74
|
+
typer.echo(f"Configuration '{name}' not found in profile '{profile}'.")
|
|
75
|
+
raise typer.Exit(1)
|
|
76
|
+
|
|
77
|
+
typer.echo(config[profile][name])
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
@configure_app.command(name="list")
|
|
81
|
+
def configure_list():
|
|
82
|
+
"""List all configuration values in the default profile."""
|
|
83
|
+
# pylint: disable-next=import-outside-toplevel
|
|
84
|
+
from qbraid_core.config import load_config
|
|
85
|
+
|
|
86
|
+
config = load_config()
|
|
87
|
+
console = Console()
|
|
88
|
+
profile = "default"
|
|
89
|
+
|
|
90
|
+
if profile not in config:
|
|
91
|
+
typer.echo("Default profile not found in configuration.")
|
|
92
|
+
raise typer.Exit(1)
|
|
93
|
+
|
|
94
|
+
if not config[profile]:
|
|
95
|
+
typer.echo("No configuration values found in default profile.")
|
|
96
|
+
return
|
|
97
|
+
|
|
98
|
+
table = Table(show_edge=False, box=box.MINIMAL)
|
|
99
|
+
table.add_column("Name", style="cyan")
|
|
100
|
+
table.add_column("Value", style="green")
|
|
101
|
+
|
|
102
|
+
sensitive_keys = {"api-key", "refresh-token"}
|
|
103
|
+
|
|
104
|
+
for name, value in config[profile].items():
|
|
105
|
+
if name in sensitive_keys and value:
|
|
106
|
+
masked_value = f"*****{str(value)[-3:]}"
|
|
107
|
+
else:
|
|
108
|
+
masked_value = str(value)
|
|
109
|
+
table.add_row(name, masked_value)
|
|
110
|
+
|
|
111
|
+
console.print(table)
|
|
112
|
+
|
|
113
|
+
|
|
56
114
|
@configure_app.command(name="magic")
|
|
57
115
|
def configure_magic():
|
|
58
116
|
"""Enable qBraid IPython magic commands."""
|
|
@@ -75,6 +75,7 @@ tests/account/__init__.py
|
|
|
75
75
|
tests/account/test_account_credits.py
|
|
76
76
|
tests/admin/test_headers.py
|
|
77
77
|
tests/configure/__init__.py
|
|
78
|
+
tests/configure/test_configure_commands.py
|
|
78
79
|
tests/configure/test_configure_prompt_for_config.py
|
|
79
80
|
tests/configure/test_configure_set.py
|
|
80
81
|
tests/configure/test_configure_validate_input.py
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# Copyright (c) 2025, qBraid Development Team
|
|
2
|
+
# All rights reserved.
|
|
3
|
+
|
|
4
|
+
"""
|
|
5
|
+
Unit tests for the configure list and get commands.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from unittest.mock import MagicMock, patch
|
|
9
|
+
|
|
10
|
+
import pytest
|
|
11
|
+
import typer
|
|
12
|
+
|
|
13
|
+
from qbraid_cli.configure.app import configure_get, configure_list
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def test_configure_list_empty_profile(capsys):
|
|
17
|
+
"""Test configure_list with an empty default profile."""
|
|
18
|
+
mock_load_config = MagicMock(return_value={"default": {}})
|
|
19
|
+
|
|
20
|
+
with patch("qbraid_core.config.load_config", mock_load_config):
|
|
21
|
+
configure_list()
|
|
22
|
+
captured = capsys.readouterr()
|
|
23
|
+
assert "No configuration values found in default profile." in captured.out
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def test_configure_list_missing_profile(capsys):
|
|
27
|
+
"""Test configure_list with a missing default profile."""
|
|
28
|
+
mock_load_config = MagicMock(return_value={})
|
|
29
|
+
|
|
30
|
+
with patch("qbraid_core.config.load_config", mock_load_config):
|
|
31
|
+
with pytest.raises(typer.Exit):
|
|
32
|
+
configure_list()
|
|
33
|
+
captured = capsys.readouterr()
|
|
34
|
+
assert "Default profile not found in configuration." in captured.out
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def test_configure_list_with_values(capsys):
|
|
38
|
+
"""Test configure_list with various configuration values."""
|
|
39
|
+
mock_config = {
|
|
40
|
+
"default": {
|
|
41
|
+
"api-key": "abcdef123456",
|
|
42
|
+
"refresh-token": "xyz987654321",
|
|
43
|
+
"url": "https://example.com",
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
mock_load_config = MagicMock(return_value=mock_config)
|
|
47
|
+
|
|
48
|
+
with patch("qbraid_core.config.load_config", mock_load_config):
|
|
49
|
+
configure_list()
|
|
50
|
+
captured = capsys.readouterr()
|
|
51
|
+
|
|
52
|
+
# Check that sensitive values are masked
|
|
53
|
+
assert "*****456" in captured.out # last 3 chars of api-key
|
|
54
|
+
assert "*****321" in captured.out # last 3 chars of refresh-token
|
|
55
|
+
# Check that non-sensitive values are shown in full
|
|
56
|
+
assert "https://example.com" in captured.out
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
def test_configure_get_success(capsys):
|
|
60
|
+
"""Test configure_get with an existing configuration value."""
|
|
61
|
+
mock_config = {"default": {"test-key": "test-value"}}
|
|
62
|
+
mock_load_config = MagicMock(return_value=mock_config)
|
|
63
|
+
|
|
64
|
+
with patch("qbraid_core.config.load_config", mock_load_config):
|
|
65
|
+
configure_get("test-key", "default")
|
|
66
|
+
captured = capsys.readouterr()
|
|
67
|
+
assert "test-value" in captured.out
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
def test_configure_get_missing_profile(capsys):
|
|
71
|
+
"""Test configure_get with a missing profile."""
|
|
72
|
+
mock_config = {}
|
|
73
|
+
mock_load_config = MagicMock(return_value=mock_config)
|
|
74
|
+
|
|
75
|
+
with patch("qbraid_core.config.load_config", mock_load_config):
|
|
76
|
+
with pytest.raises(typer.Exit):
|
|
77
|
+
configure_get("test-key", "missing-profile")
|
|
78
|
+
captured = capsys.readouterr()
|
|
79
|
+
assert "Profile 'missing-profile' not found in configuration." in captured.out
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
def test_configure_get_missing_key(capsys):
|
|
83
|
+
"""Test configure_get with a missing configuration key."""
|
|
84
|
+
mock_config = {"default": {}}
|
|
85
|
+
mock_load_config = MagicMock(return_value=mock_config)
|
|
86
|
+
|
|
87
|
+
with patch("qbraid_core.config.load_config", mock_load_config):
|
|
88
|
+
with pytest.raises(typer.Exit):
|
|
89
|
+
configure_get("missing-key", "default")
|
|
90
|
+
captured = capsys.readouterr()
|
|
91
|
+
assert "Configuration 'missing-key' not found in profile 'default'." in captured.out
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|