qbraid-cli 0.9.8__tar.gz → 0.9.9__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.
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/PKG-INFO +1 -1
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/pyproject.toml +1 -1
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/_version.py +2 -2
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/admin/headers.py +1 -1
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/configure/actions.py +3 -1
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli.egg-info/PKG-INFO +1 -1
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/admin/test_headers.py +6 -2
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/configure/test_configure_validate_input.py +13 -2
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/.env.example +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/.github/dependabot.yml +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/.github/workflows/bump-version.yml +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/.github/workflows/ci-pr-target.yml +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/.github/workflows/docs-pr.yml +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/.github/workflows/docs.yml +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/.github/workflows/format.yml +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/.github/workflows/main.yml +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/.github/workflows/pre-release.yml +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/.github/workflows/publish.yml +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/.github/workflows/tag-on-merge.yml +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/.gitignore +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/.readthedocs.yml +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/CONTRIBUTING.md +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/LICENSE +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/MANIFEST.IN +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/Makefile +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/README.md +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/docs/Makefile +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/docs/_static/favicon.ico +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/docs/_static/logo.png +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/docs/_static/style/custom.css +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/docs/_static/style/s4defs-roles.css +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/docs/conf.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/docs/index.rst +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/docs/make.bat +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/docs/requirements.txt +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/__init__.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/account/__init__.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/account/app.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/admin/__init__.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/admin/app.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/admin/validation.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/chat/__init__.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/chat/app.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/configure/__init__.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/configure/app.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/devices/__init__.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/devices/app.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/devices/validation.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/envs/__init__.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/envs/activate.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/envs/app.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/envs/create.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/envs/data_handling.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/exceptions.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/files/__init__.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/files/app.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/handlers.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/jobs/__init__.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/jobs/app.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/jobs/toggle_braket.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/jobs/validation.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/kernels/__init__.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/kernels/app.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/main.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/pip/__init__.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/pip/app.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/pip/hooks.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/py.typed +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli.egg-info/SOURCES.txt +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli.egg-info/dependency_links.txt +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli.egg-info/entry_points.txt +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli.egg-info/requires.txt +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli.egg-info/top_level.txt +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/setup.cfg +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/__init__.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/account/__init__.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/account/test_account_credits.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/configure/__init__.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/configure/test_configure_commands.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/configure/test_configure_prompt_for_config.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/configure/test_configure_set.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/conftest.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/devices/__init__.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/devices/test_devices_list.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/devices/test_devices_validations.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/envs/__init__.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/envs/test_envs_activate.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/envs/test_envs_activate_find_shell_rc.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/envs/test_envs_activate_print_command.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/envs/test_envs_activate_pyenv.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/envs/test_envs_create_from_yaml.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/envs/test_envs_list.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/envs/test_envs_remove.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/files/__init__.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/files/test_files_commands.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/jobs/__init__.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/jobs/test_jobs_disable.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/jobs/test_jobs_enable.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/jobs/test_jobs_list.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/jobs/test_jobs_state.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/jobs/test_jobs_toggle_braket_confirm.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/jobs/test_jobs_toggle_braket_disable.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/jobs/test_jobs_toggle_braket_enable.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/jobs/test_jobs_toggle_braket_get_data.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/jobs/test_jobs_validate_get_state.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/jobs/test_jobs_validate_handle_state.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/jobs/test_jobs_validate_library.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/kernels/__init__.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/kernels/test_kernels_list.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/resources/envs/correct.yaml +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/resources/envs/icon.png +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/resources/envs/incorrect.yaml +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tools/bump_version.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tools/create_dev_build.sh +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tools/install_wheel_extras.sh +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tools/split_md.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tools/split_rst.py +0 -0
- {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/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.9"
|
|
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+gf53eaff'
|
|
16
|
+
__version_tuple__ = version_tuple = (0, 1, 'dev1', 'gf53eaff')
|
|
@@ -170,7 +170,7 @@ def check_and_fix_headers(
|
|
|
170
170
|
failed_headers.append(file_path)
|
|
171
171
|
else:
|
|
172
172
|
# Form the new content by combining the header, one blank line, and the actual content
|
|
173
|
-
new_content = updated_header.strip() + "\n\n" + actual_content
|
|
173
|
+
new_content = updated_header.strip() + "\n\n" + actual_content + "\n"
|
|
174
174
|
with open(file_path, "w", encoding="ISO-8859-1") as f:
|
|
175
175
|
f.write(new_content)
|
|
176
176
|
fixed_headers.append(file_path)
|
|
@@ -37,6 +37,8 @@ def validate_input(key: str, value: str) -> str:
|
|
|
37
37
|
Raises:
|
|
38
38
|
typer.BadParameter: If the value is invalid
|
|
39
39
|
"""
|
|
40
|
+
value = value.strip()
|
|
41
|
+
|
|
40
42
|
if key == "url":
|
|
41
43
|
if not re.match(r"^https?://\S+$", value):
|
|
42
44
|
raise typer.BadParameter("Invalid URL format.")
|
|
@@ -44,7 +46,7 @@ def validate_input(key: str, value: str) -> str:
|
|
|
44
46
|
if not re.match(r"^\S+@\S+\.\S+$", value):
|
|
45
47
|
raise typer.BadParameter("Invalid email format.")
|
|
46
48
|
elif key == "api-key":
|
|
47
|
-
if not
|
|
49
|
+
if not re.match(r"^[a-zA-Z0-9]+$", value):
|
|
48
50
|
raise typer.BadParameter("Invalid API key format.")
|
|
49
51
|
return value
|
|
50
52
|
|
|
@@ -42,7 +42,7 @@ def _get_test_file(test_type: str, ext: str = ".py") -> str:
|
|
|
42
42
|
with open(file_path, "w") as f:
|
|
43
43
|
prev_year_header = f"""{comment_marker} Copyright (c) {str(datetime.datetime.now().year - 1)}, qBraid Development Team
|
|
44
44
|
{comment_marker} All rights reserved."""
|
|
45
|
-
f.write(prev_year_header + "\n\n" + "print('hello world')")
|
|
45
|
+
f.write(prev_year_header + "\n\n" + "print('hello world')" + "\n")
|
|
46
46
|
else:
|
|
47
47
|
raise ValueError(f"Invalid test type: {test_type}")
|
|
48
48
|
|
|
@@ -102,7 +102,10 @@ def test_header_fix_for_file_with_no_header(ext):
|
|
|
102
102
|
with open(file_path, "r") as f:
|
|
103
103
|
assert (
|
|
104
104
|
f.read()
|
|
105
|
-
== DEFAULT_HEADER.replace("#", comment_marker)
|
|
105
|
+
== DEFAULT_HEADER.replace("#", comment_marker)
|
|
106
|
+
+ "\n"
|
|
107
|
+
+ "print('hello world')"
|
|
108
|
+
+ "\n"
|
|
106
109
|
)
|
|
107
110
|
finally:
|
|
108
111
|
remove_test_file("no_header", ext)
|
|
@@ -127,6 +130,7 @@ def test_header_update_for_file_with_old_header(ext):
|
|
|
127
130
|
== get_formatted_header(HeaderType.gpl, "test_project").replace("#", comment_marker)
|
|
128
131
|
+ "\n"
|
|
129
132
|
+ "print('hello world')"
|
|
133
|
+
+ "\n"
|
|
130
134
|
)
|
|
131
135
|
finally:
|
|
132
136
|
remove_test_file("old_header", ext)
|
|
@@ -26,6 +26,17 @@ def test_validate_input_valid(key, value):
|
|
|
26
26
|
assert validate_input(key, value) == value, f"Valid {key} should not raise an exception"
|
|
27
27
|
|
|
28
28
|
|
|
29
|
+
@pytest.mark.parametrize(
|
|
30
|
+
"key,value,expected",
|
|
31
|
+
[
|
|
32
|
+
("api-key", "a1B2c3D4e5F\r", "a1B2c3D4e5F"),
|
|
33
|
+
],
|
|
34
|
+
)
|
|
35
|
+
def test_validate_input_valid_strip(key, value, expected):
|
|
36
|
+
"""Test validate_input with valid inputs."""
|
|
37
|
+
assert validate_input(key, value) == expected, f"Valid {key} should not raise an exception"
|
|
38
|
+
|
|
39
|
+
|
|
29
40
|
@pytest.mark.parametrize(
|
|
30
41
|
"key,value,exception_message",
|
|
31
42
|
[
|
|
@@ -33,8 +44,8 @@ def test_validate_input_valid(key, value):
|
|
|
33
44
|
("url", "example.com", "Invalid URL format."),
|
|
34
45
|
("email", "user@example", "Invalid email format."),
|
|
35
46
|
("email", "userexample.com", "Invalid email format."),
|
|
36
|
-
("api-key", "1234567890", "Invalid API key format."),
|
|
37
|
-
("api-key", "a1B2c3D4e5F6g", "Invalid API key format."),
|
|
47
|
+
("api-key", "@#$1234567890", "Invalid API key format."),
|
|
48
|
+
("api-key", "a1B2c3D4e5F6g^74()", "Invalid API key format."),
|
|
38
49
|
],
|
|
39
50
|
)
|
|
40
51
|
def test_validate_input_invalid(key, value, exception_message):
|
|
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
|
|
File without changes
|