qbraid-cli 0.10.9a0__tar.gz → 0.10.9a1__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.

Files changed (135) hide show
  1. {qbraid_cli-0.10.9a0/qbraid_cli.egg-info → qbraid_cli-0.10.9a1}/PKG-INFO +2 -3
  2. {qbraid_cli-0.10.9a0 → qbraid_cli-0.10.9a1}/pyproject.toml +4 -7
  3. qbraid_cli-0.10.9a1/qbraid_cli/_version.py +18 -0
  4. {qbraid_cli-0.10.9a0 → qbraid_cli-0.10.9a1/qbraid_cli.egg-info}/PKG-INFO +2 -3
  5. qbraid_cli-0.10.9a1/qbraid_cli.egg-info/SOURCES.txt +49 -0
  6. qbraid_cli-0.10.9a1/tests/test_version.py +151 -0
  7. qbraid_cli-0.10.9a0/.env.example +0 -4
  8. qbraid_cli-0.10.9a0/.github/ISSUE_TEMPLATE/bug_report.yml +0 -34
  9. qbraid_cli-0.10.9a0/.github/ISSUE_TEMPLATE/feature_request.yml +0 -25
  10. qbraid_cli-0.10.9a0/.github/PULL_REQUEST_TEMPLATE.md +0 -3
  11. qbraid_cli-0.10.9a0/.github/dependabot.yml +0 -15
  12. qbraid_cli-0.10.9a0/.github/workflows/bump-version.yml +0 -71
  13. qbraid_cli-0.10.9a0/.github/workflows/ci-pr-target.yml +0 -81
  14. qbraid_cli-0.10.9a0/.github/workflows/docs-pr.yml +0 -128
  15. qbraid_cli-0.10.9a0/.github/workflows/docs.yml +0 -41
  16. qbraid_cli-0.10.9a0/.github/workflows/format.yml +0 -30
  17. qbraid_cli-0.10.9a0/.github/workflows/main.yml +0 -84
  18. qbraid_cli-0.10.9a0/.github/workflows/pre-release.yml +0 -38
  19. qbraid_cli-0.10.9a0/.github/workflows/publish.yml +0 -30
  20. qbraid_cli-0.10.9a0/.github/workflows/tag-on-merge.yml +0 -36
  21. qbraid_cli-0.10.9a0/.gitignore +0 -167
  22. qbraid_cli-0.10.9a0/.readthedocs.yml +0 -23
  23. qbraid_cli-0.10.9a0/CLAUDE.md +0 -904
  24. qbraid_cli-0.10.9a0/CONTRIBUTING.md +0 -128
  25. qbraid_cli-0.10.9a0/MANIFEST.IN +0 -6
  26. qbraid_cli-0.10.9a0/MCP_IMPLEMENTATION_PROGRESS.md +0 -329
  27. qbraid_cli-0.10.9a0/Makefile +0 -58
  28. qbraid_cli-0.10.9a0/docs/Makefile +0 -21
  29. qbraid_cli-0.10.9a0/docs/_static/favicon.ico +0 -0
  30. qbraid_cli-0.10.9a0/docs/_static/logo.png +0 -0
  31. qbraid_cli-0.10.9a0/docs/_static/style/custom.css +0 -269
  32. qbraid_cli-0.10.9a0/docs/_static/style/s4defs-roles.css +0 -329
  33. qbraid_cli-0.10.9a0/docs/conf.py +0 -75
  34. qbraid_cli-0.10.9a0/docs/index.rst +0 -134
  35. qbraid_cli-0.10.9a0/docs/make.bat +0 -36
  36. qbraid_cli-0.10.9a0/docs/requirements.txt +0 -7
  37. qbraid_cli-0.10.9a0/qbraid_cli.egg-info/SOURCES.txt +0 -130
  38. qbraid_cli-0.10.9a0/tests/__init__.py +0 -0
  39. qbraid_cli-0.10.9a0/tests/account/__init__.py +0 -0
  40. qbraid_cli-0.10.9a0/tests/account/test_account_credits.py +0 -86
  41. qbraid_cli-0.10.9a0/tests/admin/test_headers.py +0 -232
  42. qbraid_cli-0.10.9a0/tests/configure/__init__.py +0 -0
  43. qbraid_cli-0.10.9a0/tests/configure/test_configure_commands.py +0 -117
  44. qbraid_cli-0.10.9a0/tests/configure/test_configure_default.py +0 -61
  45. qbraid_cli-0.10.9a0/tests/configure/test_configure_prompt_for_config.py +0 -54
  46. qbraid_cli-0.10.9a0/tests/configure/test_configure_set.py +0 -37
  47. qbraid_cli-0.10.9a0/tests/configure/test_configure_validate_input.py +0 -65
  48. qbraid_cli-0.10.9a0/tests/conftest.py +0 -35
  49. qbraid_cli-0.10.9a0/tests/devices/__init__.py +0 -0
  50. qbraid_cli-0.10.9a0/tests/devices/test_devices_get.py +0 -278
  51. qbraid_cli-0.10.9a0/tests/devices/test_devices_list.py +0 -74
  52. qbraid_cli-0.10.9a0/tests/devices/test_devices_validations.py +0 -72
  53. qbraid_cli-0.10.9a0/tests/envs/__init__.py +0 -0
  54. qbraid_cli-0.10.9a0/tests/envs/test_envs_activate.py +0 -42
  55. qbraid_cli-0.10.9a0/tests/envs/test_envs_activate_find_shell_rc.py +0 -54
  56. qbraid_cli-0.10.9a0/tests/envs/test_envs_activate_print_command.py +0 -38
  57. qbraid_cli-0.10.9a0/tests/envs/test_envs_activate_pyenv.py +0 -70
  58. qbraid_cli-0.10.9a0/tests/envs/test_envs_create_from_yaml.py +0 -108
  59. qbraid_cli-0.10.9a0/tests/envs/test_envs_list.py +0 -37
  60. qbraid_cli-0.10.9a0/tests/envs/test_envs_remove.py +0 -34
  61. qbraid_cli-0.10.9a0/tests/files/__init__.py +0 -0
  62. qbraid_cli-0.10.9a0/tests/files/test_files_commands.py +0 -148
  63. qbraid_cli-0.10.9a0/tests/jobs/__init__.py +0 -0
  64. qbraid_cli-0.10.9a0/tests/jobs/test_jobs_disable.py +0 -51
  65. qbraid_cli-0.10.9a0/tests/jobs/test_jobs_enable.py +0 -69
  66. qbraid_cli-0.10.9a0/tests/jobs/test_jobs_get.py +0 -179
  67. qbraid_cli-0.10.9a0/tests/jobs/test_jobs_list.py +0 -50
  68. qbraid_cli-0.10.9a0/tests/jobs/test_jobs_state.py +0 -32
  69. qbraid_cli-0.10.9a0/tests/jobs/test_jobs_toggle_braket_confirm.py +0 -52
  70. qbraid_cli-0.10.9a0/tests/jobs/test_jobs_toggle_braket_disable.py +0 -100
  71. qbraid_cli-0.10.9a0/tests/jobs/test_jobs_toggle_braket_enable.py +0 -107
  72. qbraid_cli-0.10.9a0/tests/jobs/test_jobs_toggle_braket_get_data.py +0 -185
  73. qbraid_cli-0.10.9a0/tests/jobs/test_jobs_validate_get_state.py +0 -94
  74. qbraid_cli-0.10.9a0/tests/jobs/test_jobs_validate_handle_state.py +0 -60
  75. qbraid_cli-0.10.9a0/tests/jobs/test_jobs_validate_library.py +0 -35
  76. qbraid_cli-0.10.9a0/tests/kernels/__init__.py +0 -0
  77. qbraid_cli-0.10.9a0/tests/kernels/test_kernels_list.py +0 -82
  78. qbraid_cli-0.10.9a0/tests/mcp/__init__.py +0 -2
  79. qbraid_cli-0.10.9a0/tests/mcp/test_mcp_list.py +0 -219
  80. qbraid_cli-0.10.9a0/tests/mcp/test_mcp_serve.py +0 -393
  81. qbraid_cli-0.10.9a0/tests/mcp/test_mcp_status.py +0 -48
  82. qbraid_cli-0.10.9a0/tests/resources/envs/correct.yaml +0 -16
  83. qbraid_cli-0.10.9a0/tests/resources/envs/icon.png +0 -0
  84. qbraid_cli-0.10.9a0/tests/resources/envs/incorrect.yaml +0 -4
  85. qbraid_cli-0.10.9a0/tools/bump_version.py +0 -28
  86. qbraid_cli-0.10.9a0/tools/create_dev_build.sh +0 -88
  87. qbraid_cli-0.10.9a0/tools/install_wheel_extras.sh +0 -67
  88. qbraid_cli-0.10.9a0/tools/split_md.py +0 -185
  89. qbraid_cli-0.10.9a0/tools/split_rst.py +0 -119
  90. qbraid_cli-0.10.9a0/tools/stamp_pre_release.py +0 -36
  91. {qbraid_cli-0.10.9a0 → qbraid_cli-0.10.9a1}/LICENSE +0 -0
  92. {qbraid_cli-0.10.9a0 → qbraid_cli-0.10.9a1}/README.md +0 -0
  93. {qbraid_cli-0.10.9a0 → qbraid_cli-0.10.9a1}/qbraid_cli/__init__.py +0 -0
  94. {qbraid_cli-0.10.9a0 → qbraid_cli-0.10.9a1}/qbraid_cli/account/__init__.py +0 -0
  95. {qbraid_cli-0.10.9a0 → qbraid_cli-0.10.9a1}/qbraid_cli/account/app.py +0 -0
  96. {qbraid_cli-0.10.9a0 → qbraid_cli-0.10.9a1}/qbraid_cli/admin/__init__.py +0 -0
  97. {qbraid_cli-0.10.9a0 → qbraid_cli-0.10.9a1}/qbraid_cli/admin/app.py +0 -0
  98. {qbraid_cli-0.10.9a0 → qbraid_cli-0.10.9a1}/qbraid_cli/admin/headers.py +0 -0
  99. {qbraid_cli-0.10.9a0 → qbraid_cli-0.10.9a1}/qbraid_cli/admin/validation.py +0 -0
  100. {qbraid_cli-0.10.9a0 → qbraid_cli-0.10.9a1}/qbraid_cli/chat/__init__.py +0 -0
  101. {qbraid_cli-0.10.9a0 → qbraid_cli-0.10.9a1}/qbraid_cli/chat/app.py +0 -0
  102. {qbraid_cli-0.10.9a0 → qbraid_cli-0.10.9a1}/qbraid_cli/configure/__init__.py +0 -0
  103. {qbraid_cli-0.10.9a0 → qbraid_cli-0.10.9a1}/qbraid_cli/configure/actions.py +0 -0
  104. {qbraid_cli-0.10.9a0 → qbraid_cli-0.10.9a1}/qbraid_cli/configure/app.py +0 -0
  105. {qbraid_cli-0.10.9a0 → qbraid_cli-0.10.9a1}/qbraid_cli/devices/__init__.py +0 -0
  106. {qbraid_cli-0.10.9a0 → qbraid_cli-0.10.9a1}/qbraid_cli/devices/app.py +0 -0
  107. {qbraid_cli-0.10.9a0 → qbraid_cli-0.10.9a1}/qbraid_cli/devices/validation.py +0 -0
  108. {qbraid_cli-0.10.9a0 → qbraid_cli-0.10.9a1}/qbraid_cli/envs/__init__.py +0 -0
  109. {qbraid_cli-0.10.9a0 → qbraid_cli-0.10.9a1}/qbraid_cli/envs/activate.py +0 -0
  110. {qbraid_cli-0.10.9a0 → qbraid_cli-0.10.9a1}/qbraid_cli/envs/app.py +0 -0
  111. {qbraid_cli-0.10.9a0 → qbraid_cli-0.10.9a1}/qbraid_cli/envs/create.py +0 -0
  112. {qbraid_cli-0.10.9a0 → qbraid_cli-0.10.9a1}/qbraid_cli/envs/data_handling.py +0 -0
  113. {qbraid_cli-0.10.9a0 → qbraid_cli-0.10.9a1}/qbraid_cli/exceptions.py +0 -0
  114. {qbraid_cli-0.10.9a0 → qbraid_cli-0.10.9a1}/qbraid_cli/files/__init__.py +0 -0
  115. {qbraid_cli-0.10.9a0 → qbraid_cli-0.10.9a1}/qbraid_cli/files/app.py +0 -0
  116. {qbraid_cli-0.10.9a0 → qbraid_cli-0.10.9a1}/qbraid_cli/handlers.py +0 -0
  117. {qbraid_cli-0.10.9a0 → qbraid_cli-0.10.9a1}/qbraid_cli/jobs/__init__.py +0 -0
  118. {qbraid_cli-0.10.9a0 → qbraid_cli-0.10.9a1}/qbraid_cli/jobs/app.py +0 -0
  119. {qbraid_cli-0.10.9a0 → qbraid_cli-0.10.9a1}/qbraid_cli/jobs/toggle_braket.py +0 -0
  120. {qbraid_cli-0.10.9a0 → qbraid_cli-0.10.9a1}/qbraid_cli/jobs/validation.py +0 -0
  121. {qbraid_cli-0.10.9a0 → qbraid_cli-0.10.9a1}/qbraid_cli/kernels/__init__.py +0 -0
  122. {qbraid_cli-0.10.9a0 → qbraid_cli-0.10.9a1}/qbraid_cli/kernels/app.py +0 -0
  123. {qbraid_cli-0.10.9a0 → qbraid_cli-0.10.9a1}/qbraid_cli/main.py +0 -0
  124. {qbraid_cli-0.10.9a0 → qbraid_cli-0.10.9a1}/qbraid_cli/mcp/__init__.py +0 -0
  125. {qbraid_cli-0.10.9a0 → qbraid_cli-0.10.9a1}/qbraid_cli/mcp/app.py +0 -0
  126. {qbraid_cli-0.10.9a0 → qbraid_cli-0.10.9a1}/qbraid_cli/mcp/serve.py +0 -0
  127. {qbraid_cli-0.10.9a0 → qbraid_cli-0.10.9a1}/qbraid_cli/pip/__init__.py +0 -0
  128. {qbraid_cli-0.10.9a0 → qbraid_cli-0.10.9a1}/qbraid_cli/pip/app.py +0 -0
  129. {qbraid_cli-0.10.9a0 → qbraid_cli-0.10.9a1}/qbraid_cli/pip/hooks.py +0 -0
  130. {qbraid_cli-0.10.9a0 → qbraid_cli-0.10.9a1}/qbraid_cli/py.typed +0 -0
  131. {qbraid_cli-0.10.9a0 → qbraid_cli-0.10.9a1}/qbraid_cli.egg-info/dependency_links.txt +0 -0
  132. {qbraid_cli-0.10.9a0 → qbraid_cli-0.10.9a1}/qbraid_cli.egg-info/entry_points.txt +0 -0
  133. {qbraid_cli-0.10.9a0 → qbraid_cli-0.10.9a1}/qbraid_cli.egg-info/requires.txt +0 -0
  134. {qbraid_cli-0.10.9a0 → qbraid_cli-0.10.9a1}/qbraid_cli.egg-info/top_level.txt +0 -0
  135. {qbraid_cli-0.10.9a0 → qbraid_cli-0.10.9a1}/setup.cfg +0 -0
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: qbraid-cli
3
- Version: 0.10.9a0
3
+ Version: 0.10.9a1
4
4
  Summary: Command Line Interface for interacting with all parts of the qBraid platform.
5
5
  Author-email: qBraid Development Team <contact@qbraid.com>
6
- License: Proprietary
6
+ License-Expression: LicenseRef-Proprietary
7
7
  Project-URL: Homepage, https://docs.qbraid.com/cli/user-guide/overview
8
8
  Project-URL: Documentation, https://docs.qbraid.com/cli/api-reference/qbraid
9
9
  Project-URL: Bug Tracker, https://github.com/qBraid/community/issues
@@ -12,7 +12,6 @@ Keywords: qbraid,cli,quantum,cloud
12
12
  Classifier: Development Status :: 5 - Production/Stable
13
13
  Classifier: Intended Audience :: Developers
14
14
  Classifier: Natural Language :: English
15
- Classifier: License :: Other/Proprietary License
16
15
  Classifier: Intended Audience :: System Administrators
17
16
  Classifier: Operating System :: Microsoft :: Windows
18
17
  Classifier: Operating System :: POSIX :: Linux
@@ -1,20 +1,20 @@
1
1
  [build-system]
2
- requires = ["setuptools>=42", "wheel", "setuptools_scm"]
2
+ requires = ["setuptools>=42", "wheel"]
3
3
  build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "qbraid-cli"
7
- version = "0.10.9a0"
7
+ version = "0.10.9a1"
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" }]
11
- license = { text = "Proprietary" }
11
+ license = "LicenseRef-Proprietary"
12
+ license-files = ["LICENSE"]
12
13
  keywords = ["qbraid", "cli", "quantum", "cloud"]
13
14
  classifiers = [
14
15
  "Development Status :: 5 - Production/Stable",
15
16
  "Intended Audience :: Developers",
16
17
  "Natural Language :: English",
17
- "License :: Other/Proprietary License",
18
18
  "Intended Audience :: System Administrators",
19
19
  "Operating System :: Microsoft :: Windows",
20
20
  "Operating System :: POSIX :: Linux",
@@ -50,9 +50,6 @@ dev = ["isort", "black", "pytest", "pytest-cov", "pytest-asyncio"]
50
50
  [project.scripts]
51
51
  qbraid = "qbraid_cli.main:app"
52
52
 
53
- [tool.setuptools_scm]
54
- write_to = "qbraid_cli/_version.py"
55
-
56
53
  [tool.black]
57
54
  line-length = 100
58
55
  target-version = ["py39", "py310", "py311", "py312"]
@@ -0,0 +1,18 @@
1
+ # Copyright (c) 2025, qBraid Development Team
2
+ # All rights reserved.
3
+
4
+ """
5
+ Module defining package version.
6
+
7
+ """
8
+
9
+ import importlib.metadata
10
+
11
+ try:
12
+ __version__ = importlib.metadata.version("qbraid-cli")
13
+ except Exception: # pylint: disable=broad-exception-caught # pragma: no cover
14
+ __version__ = "dev"
15
+
16
+ __version_tuple__ = tuple(int(part) if part.isdigit() else part for part in __version__.split("."))
17
+
18
+ __all__ = ["__version__", "__version_tuple__"]
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: qbraid-cli
3
- Version: 0.10.9a0
3
+ Version: 0.10.9a1
4
4
  Summary: Command Line Interface for interacting with all parts of the qBraid platform.
5
5
  Author-email: qBraid Development Team <contact@qbraid.com>
6
- License: Proprietary
6
+ License-Expression: LicenseRef-Proprietary
7
7
  Project-URL: Homepage, https://docs.qbraid.com/cli/user-guide/overview
8
8
  Project-URL: Documentation, https://docs.qbraid.com/cli/api-reference/qbraid
9
9
  Project-URL: Bug Tracker, https://github.com/qBraid/community/issues
@@ -12,7 +12,6 @@ Keywords: qbraid,cli,quantum,cloud
12
12
  Classifier: Development Status :: 5 - Production/Stable
13
13
  Classifier: Intended Audience :: Developers
14
14
  Classifier: Natural Language :: English
15
- Classifier: License :: Other/Proprietary License
16
15
  Classifier: Intended Audience :: System Administrators
17
16
  Classifier: Operating System :: Microsoft :: Windows
18
17
  Classifier: Operating System :: POSIX :: Linux
@@ -0,0 +1,49 @@
1
+ LICENSE
2
+ README.md
3
+ pyproject.toml
4
+ qbraid_cli/__init__.py
5
+ qbraid_cli/_version.py
6
+ qbraid_cli/exceptions.py
7
+ qbraid_cli/handlers.py
8
+ qbraid_cli/main.py
9
+ qbraid_cli/py.typed
10
+ qbraid_cli.egg-info/PKG-INFO
11
+ qbraid_cli.egg-info/SOURCES.txt
12
+ qbraid_cli.egg-info/dependency_links.txt
13
+ qbraid_cli.egg-info/entry_points.txt
14
+ qbraid_cli.egg-info/requires.txt
15
+ qbraid_cli.egg-info/top_level.txt
16
+ qbraid_cli/account/__init__.py
17
+ qbraid_cli/account/app.py
18
+ qbraid_cli/admin/__init__.py
19
+ qbraid_cli/admin/app.py
20
+ qbraid_cli/admin/headers.py
21
+ qbraid_cli/admin/validation.py
22
+ qbraid_cli/chat/__init__.py
23
+ qbraid_cli/chat/app.py
24
+ qbraid_cli/configure/__init__.py
25
+ qbraid_cli/configure/actions.py
26
+ qbraid_cli/configure/app.py
27
+ qbraid_cli/devices/__init__.py
28
+ qbraid_cli/devices/app.py
29
+ qbraid_cli/devices/validation.py
30
+ qbraid_cli/envs/__init__.py
31
+ qbraid_cli/envs/activate.py
32
+ qbraid_cli/envs/app.py
33
+ qbraid_cli/envs/create.py
34
+ qbraid_cli/envs/data_handling.py
35
+ qbraid_cli/files/__init__.py
36
+ qbraid_cli/files/app.py
37
+ qbraid_cli/jobs/__init__.py
38
+ qbraid_cli/jobs/app.py
39
+ qbraid_cli/jobs/toggle_braket.py
40
+ qbraid_cli/jobs/validation.py
41
+ qbraid_cli/kernels/__init__.py
42
+ qbraid_cli/kernels/app.py
43
+ qbraid_cli/mcp/__init__.py
44
+ qbraid_cli/mcp/app.py
45
+ qbraid_cli/mcp/serve.py
46
+ qbraid_cli/pip/__init__.py
47
+ qbraid_cli/pip/app.py
48
+ qbraid_cli/pip/hooks.py
49
+ tests/test_version.py
@@ -0,0 +1,151 @@
1
+ # Copyright (c) 2025, qBraid Development Team
2
+ # All rights reserved.
3
+
4
+ """
5
+ Unit tests for qbraid_cli._version module.
6
+ """
7
+
8
+ from unittest.mock import patch
9
+
10
+ import qbraid_cli._version as version_module
11
+
12
+
13
+ def test_version_is_string():
14
+ """Test that __version__ is a string."""
15
+ assert isinstance(version_module.__version__, str)
16
+
17
+
18
+ def test_version_not_empty():
19
+ """Test that __version__ is not empty."""
20
+ assert len(version_module.__version__) > 0
21
+
22
+
23
+ def test_version_format():
24
+ """Test that __version__ follows semantic versioning or is 'dev'."""
25
+ version = version_module.__version__
26
+ if version != "dev":
27
+ # Should have at least major.minor format
28
+ parts = version.split(".")
29
+ assert len(parts) >= 2, "Version should have at least major.minor"
30
+ # First two parts should be numeric
31
+ assert parts[0].isdigit(), "Major version should be numeric"
32
+ assert parts[1].split("-")[0].isdigit(), "Minor version should be numeric"
33
+
34
+
35
+ def test_version_tuple_is_tuple():
36
+ """Test that __version_tuple__ is a tuple."""
37
+ assert isinstance(version_module.__version_tuple__, tuple)
38
+
39
+
40
+ def test_version_tuple_not_empty():
41
+ """Test that __version_tuple__ is not empty."""
42
+ assert len(version_module.__version_tuple__) > 0
43
+
44
+
45
+ def test_version_tuple_structure():
46
+ """Test that __version_tuple__ has expected structure."""
47
+ version_tuple = version_module.__version_tuple__
48
+ # Should have at least 2 elements (major, minor)
49
+ assert len(version_tuple) >= 2
50
+ # First two elements should be integers (major, minor)
51
+ if version_module.__version__ != "dev":
52
+ assert isinstance(version_tuple[0], int), "Major version should be int"
53
+
54
+
55
+ def test_version_tuple_matches_version_string():
56
+ """Test that __version_tuple__ components match __version__ string."""
57
+ version = version_module.__version__
58
+ version_tuple = version_module.__version_tuple__
59
+
60
+ parts = version.split(".")
61
+ for i, part in enumerate(parts):
62
+ if i < len(version_tuple):
63
+ if part.isdigit():
64
+ assert version_tuple[i] == int(part), f"Tuple element {i} should match version part"
65
+ else:
66
+ assert version_tuple[i] == part, f"Tuple element {i} should match version part"
67
+
68
+
69
+ def test_module_exports():
70
+ """Test that __all__ contains expected exports."""
71
+ assert hasattr(version_module, "__all__")
72
+ assert "__version__" in version_module.__all__
73
+ assert "__version_tuple__" in version_module.__all__
74
+
75
+
76
+ def test_version_fallback_on_metadata_error():
77
+ """Test that __version__ falls back to 'dev' when metadata is not available."""
78
+ # pylint: disable=import-outside-toplevel,reimported
79
+ import sys
80
+
81
+ with patch("importlib.metadata.version", side_effect=Exception("Metadata not found")):
82
+ # Remove from sys.modules to force reload
83
+ if "qbraid_cli._version" in sys.modules:
84
+ del sys.modules["qbraid_cli._version"]
85
+
86
+ # Import again (will use mocked metadata.version)
87
+ import qbraid_cli._version as reloaded_version
88
+
89
+ # Should fall back to 'dev'
90
+ assert reloaded_version.__version__ == "dev"
91
+
92
+ # Clean up - reload the original module
93
+ if "qbraid_cli._version" in sys.modules:
94
+ del sys.modules["qbraid_cli._version"]
95
+ import qbraid_cli._version # noqa: F401 # pylint: disable=unused-import
96
+
97
+
98
+ def test_version_tuple_handles_dev():
99
+ """Test that __version_tuple__ correctly handles 'dev' version."""
100
+ # pylint: disable=import-outside-toplevel,reimported
101
+ import sys
102
+
103
+ with patch("importlib.metadata.version", side_effect=Exception("Metadata not found")):
104
+ # Remove from sys.modules to force reload
105
+ if "qbraid_cli._version" in sys.modules:
106
+ del sys.modules["qbraid_cli._version"]
107
+
108
+ # Import again (will use mocked metadata.version)
109
+ import qbraid_cli._version as reloaded_version
110
+
111
+ # Should fall back to 'dev'
112
+ assert reloaded_version.__version__ == "dev"
113
+ assert reloaded_version.__version_tuple__ == ("dev",)
114
+
115
+ # Clean up
116
+ if "qbraid_cli._version" in sys.modules:
117
+ del sys.modules["qbraid_cli._version"]
118
+ import qbraid_cli._version # noqa: F401 # pylint: disable=unused-import
119
+
120
+
121
+ def test_version_tuple_handles_prerelease():
122
+ """Test that __version_tuple__ correctly handles pre-release versions."""
123
+ # Example: "0.10.9.dev" or "0.10.9-beta.1"
124
+ test_version = "0.10.9.dev"
125
+ parts = test_version.split(".")
126
+ version_tuple = tuple(int(part) if part.isdigit() else part for part in parts)
127
+
128
+ # Should have 4 elements: (0, 10, 9, 'dev')
129
+ assert len(version_tuple) == 4
130
+ assert version_tuple[0] == 0
131
+ assert version_tuple[1] == 10
132
+ assert version_tuple[2] == 9
133
+ assert version_tuple[3] == "dev"
134
+
135
+
136
+ def test_version_comparison():
137
+ """Test that version tuples can be compared."""
138
+ # Create sample version tuples
139
+ v1 = (0, 10, 8)
140
+ v2 = (0, 10, 9)
141
+ v3 = (1, 0, 0)
142
+
143
+ assert v1 < v2
144
+ assert v2 < v3
145
+ assert v1 < v3
146
+
147
+ # Test with current version tuple if it's not 'dev'
148
+ if version_module.__version__ != "dev":
149
+ current = version_module.__version_tuple__[:3] # Take major.minor.patch
150
+ # Should be comparable to tuples - test reflexivity
151
+ assert current == current # pylint: disable=comparison-with-itself
@@ -1,4 +0,0 @@
1
- QBRAID_API_KEY= # YOURAPIKEY
2
- QBRAID_ENVS_PATH= # default: ~/.qbraid/environments
3
- QBRAID_CONFIG_FILE= # default: ~/.qbraid/qbraidrc
4
- QBRAID_CLI_SHOW_PROGRESS= # default: true
@@ -1,34 +0,0 @@
1
- name: Bug report 🚩
2
- description: Create a report to help us improve
3
- title: "[BUG] "
4
- labels: [bug]
5
-
6
- body:
7
- - type: markdown
8
- attributes:
9
- value: "Thanks for taking the time to fill out our bug report form."
10
-
11
- - type: textarea
12
- attributes:
13
- label: Environment
14
- value: |
15
- - **qBraid-CORE version**:
16
- - **qBraid-CLI version**:
17
- - **Python version**:
18
- - **Operating system**:
19
- validations:
20
- required: true
21
-
22
- - type: textarea
23
- attributes:
24
- label: What happened?
25
- description: Please provide a detailed description of the bug, accompanied by a minimal code example that demonstrates how the error(s) can be reproduced.
26
- validations:
27
- required: true
28
-
29
- - type: textarea
30
- attributes:
31
- label: Suggestions (Optional)
32
- description: We warmly welcome any recommendations on potential fixes, insights, or considerations that contributors should keep in mind when working to resolve this issue.
33
- validations:
34
- required: false
@@ -1,25 +0,0 @@
1
- name: Feature request 💡
2
- description: Suggest an idea for this project
3
- title: "[FEATURE] "
4
- labels: [enhancement]
5
-
6
- body:
7
- - type: markdown
8
- attributes:
9
- value: "Thank you for taking the time to suggest a feature. Please fill out the details below to help us understand your idea better."
10
-
11
- - type: textarea
12
- id: feature-description
13
- attributes:
14
- label: Feature Description
15
- description: "Describe the feature you'd like and the problem it solves. Include any specific use cases that illustrate its benefits."
16
- placeholder: "Please describe the feature in detail."
17
- validations:
18
- required: true
19
-
20
- - type: textarea
21
- attributes:
22
- label: Implementation (Optional)
23
- description: "Do you have an idea for how this could be implemented? Please include those details here."
24
- validations:
25
- required: false
@@ -1,3 +0,0 @@
1
- <!-- Please link or tag any issues that is PR closes -->
2
-
3
- # Changes
@@ -1,15 +0,0 @@
1
- # To get started with Dependabot version updates, you'll need to specify which
2
- # package ecosystems to update and where the package manifests are located.
3
- # Please see the documentation for all configuration options:
4
- # https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
5
-
6
- version: 2
7
- updates:
8
- - package-ecosystem: "pip" # See documentation for possible values
9
- directory: "/" # Location of package manifests
10
- schedule:
11
- interval: "weekly"
12
- - package-ecosystem: "github-actions"
13
- directory: "/"
14
- schedule:
15
- interval: "weekly"
@@ -1,71 +0,0 @@
1
- name: Bump Version
2
-
3
- on:
4
- workflow_dispatch:
5
- inputs:
6
- bump_type:
7
- description: 'Select the version bump type'
8
- required: true
9
- type: choice
10
- options:
11
- - major
12
- - minor
13
- - patch
14
- default: 'patch'
15
-
16
- jobs:
17
- bump-version:
18
- runs-on: ubuntu-latest
19
- permissions:
20
- contents: write
21
- pull-requests: write
22
- steps:
23
- - name: Checkout code
24
- uses: actions/checkout@v5
25
- with:
26
- ref: 'main'
27
-
28
- - name: Create feature branch
29
- run: git checkout -b qbraid-bot/${{ github.run_id }}
30
-
31
- - name: Setup Python
32
- uses: actions/setup-python@v6
33
- with:
34
- python-version: '3.11'
35
-
36
- - name: Install dependencies
37
- run: |
38
- python -m pip install --upgrade pip
39
- python -m pip install "qbraid-core>=0.1.17"
40
-
41
- - name: Setup Git config
42
- run: |
43
- git config --global user.name 'qbraidTeam'
44
- git config --global user.email 'qbraid.team@qbraid.com'
45
-
46
- - name: Bump version, commit and push
47
- id: bump_version
48
- run: |
49
- BUMP_TYPE=${{ github.event.inputs.bump_type }}
50
- VERSION=$(python3 tools/bump_version.py qbraid_cli $BUMP_TYPE)
51
- echo "version=$VERSION" >> $GITHUB_OUTPUT
52
- git commit -am "Bump $BUMP_TYPE version to $VERSION"
53
- git push origin qbraid-bot/${{ github.run_id }}
54
-
55
- - name: Create Pull Request
56
- id: create_pr
57
- run: |
58
- VERSION=${{ steps.bump_version.outputs.version }}
59
- PR_URL=$(gh pr create -B main -H qbraid-bot/${{ github.run_id }} --title "Bump project version to $VERSION" --body "This PR bumps the project version to $VERSION")
60
- PR_NUMBER=$(echo "$PR_URL" | grep -o '[0-9]*$')
61
- echo "url=$PR_URL" >> $GITHUB_OUTPUT
62
- echo "number=$PR_NUMBER" >> $GITHUB_OUTPUT
63
- env:
64
- GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
65
-
66
- - name: Summary
67
- run: |
68
- VERSION=${{ steps.bump_version.outputs.version }}
69
- PR_URL=${{ steps.create_pr.outputs.url }}
70
- PR_NUMBER=${{ steps.create_pr.outputs.number }}
71
- echo "Opened PR [#$PR_NUMBER]($PR_URL) to update project to version **$VERSION**." >> $GITHUB_STEP_SUMMARY
@@ -1,81 +0,0 @@
1
- name: CI (PR Target)
2
-
3
- on:
4
- pull_request_target:
5
- branches: ['main']
6
- types: [opened, reopened, ready_for_review, synchronize]
7
-
8
- jobs:
9
- build:
10
- if: github.event.pull_request.draft == false && github.event.pull_request.user.login == 'dependabot[bot]'
11
- runs-on: ubuntu-latest
12
- strategy:
13
- matrix:
14
- python-version: ['3.11']
15
-
16
- steps:
17
- - uses: actions/checkout@v5
18
- - name: Set up Python ${{ matrix.python-version }}
19
- uses: actions/setup-python@v6
20
- with:
21
- python-version: ${{ matrix.python-version }}
22
- cache: pip
23
- - name: Upgrade pip and install build tools
24
- run: |
25
- pip install --upgrade pip
26
- pip install setuptools wheel build
27
- - name: Build the package
28
- run: |
29
- python -m build
30
- - name: Upload built package
31
- uses: actions/upload-artifact@v4
32
- with:
33
- name: built-package
34
- path: dist/*.whl
35
-
36
- test:
37
- if: github.event.pull_request.draft == false && github.event.pull_request.user.login == 'dependabot[bot]'
38
- needs: build
39
- runs-on: ${{ matrix.os }}
40
- strategy:
41
- matrix:
42
- os: [ubuntu-latest, windows-latest]
43
- python-version: ['3.9', '3.10', '3.11', '3.12', '3.13']
44
- fail-fast: true
45
-
46
- steps:
47
- - uses: actions/checkout@v5
48
- - name: Set up Python ${{ matrix.python-version }}
49
- uses: actions/setup-python@v6
50
- with:
51
- python-version: ${{ matrix.python-version }}
52
- cache: pip
53
- - name: Download built package
54
- uses: actions/download-artifact@v5
55
- with:
56
- name: built-package
57
- path: dist
58
- - name: Install package
59
- run: |
60
- if ($env:RUNNER_OS -eq "Windows") {
61
- Get-ChildItem dist/*.whl | ForEach-Object { pip install $_.FullName }
62
- } else {
63
- pip install dist/*.whl
64
- }
65
- shell: pwsh
66
- - name: Install testing dependencies
67
- run: |
68
- pip install pytest pytest-cov qbraid-core[environments]
69
- - name: Run tests with pytest
70
- run: |
71
- pytest --cov=qbraid_cli tests/ --cov-report=html --cov-report=xml --cov-report=term --cov-config=pyproject.toml
72
- env:
73
- QBRAID_API_KEY: ${{ secrets.QBRAID_API_KEY }}
74
- - name: Upload coverage to Codecov
75
- if: matrix.python-version == '3.11' && matrix.os == 'ubuntu-latest'
76
- uses: codecov/codecov-action@v5.5.1
77
- with:
78
- token: ${{ secrets.CODECOV_TOKEN }}
79
- fail_ci_if_error: false
80
- files: ./build/coverage/coverage.xml
81
- verbose: true
@@ -1,128 +0,0 @@
1
- name: Open Docs PR
2
-
3
- on:
4
- pull_request:
5
- types: [closed]
6
-
7
- jobs:
8
- generate-docs-assets:
9
- if: github.event.pull_request.merged == true && github.event.pull_request.user.login == 'github-actions[bot]' && startsWith(github.event.pull_request.title, 'Bump project version to ')
10
- runs-on: ubuntu-latest
11
- outputs:
12
- cli_version: ${{ steps.get_version.outputs.version }}
13
- steps:
14
- - name: Checkout code
15
- uses: actions/checkout@v5
16
- with:
17
- ref: main
18
-
19
- - name: Install dependencies
20
- run: |
21
- python -m pip install --upgrade pip setuptools build
22
- python -m pip install -r docs/requirements.txt
23
-
24
- - name: Build & install package
25
- run: |
26
- make build
27
- tools/install_wheel_extras.sh dist --extra envs
28
-
29
- - name: Get qbraid-cli version
30
- id: get_version
31
- run: |
32
- VERSION=$(qbraid --version | grep -o '[0-9]*\.[0-9]*\.[0-9]*')
33
- echo "version=$VERSION" >> $GITHUB_OUTPUT
34
-
35
- - name: Generate docs assets
36
- run: |
37
- make docs-mdx
38
-
39
- - name: Upload docs assets
40
- uses: actions/upload-artifact@v4
41
- with:
42
- name: api-reference
43
- path: docs/tree/qbraid*.mdx
44
-
45
- commit-and-pr:
46
- if: github.event.pull_request.merged == true && github.event.pull_request.user.login == 'github-actions[bot]' && startsWith(github.event.pull_request.title, 'Bump project version to ')
47
- runs-on: ubuntu-latest
48
- needs: generate-docs-assets
49
- permissions:
50
- contents: write
51
- pull-requests: write
52
-
53
- steps:
54
- - name: Download docs assets
55
- uses: actions/download-artifact@v5
56
- with:
57
- name: api-reference
58
- path: ./api-reference
59
-
60
- - name: Checkout qBraid/docs repo
61
- uses: actions/checkout@v5
62
- with:
63
- repository: qBraid/docs
64
- token: ${{ secrets.BOT_TOKEN }}
65
- path: ./qbraid_docs
66
- ref: main
67
-
68
- - name: Create feature branch
69
- run: |
70
- cd qbraid_docs
71
- git checkout -b qbraid-cli-bot/${{ github.run_id }}
72
-
73
- - name: Update docs in qBraid/docs
74
- run: |
75
- rm -f qbraid_docs/cli/api-reference/*
76
- cp api-reference/qbraid*.mdx qbraid_docs/cli/api-reference/
77
-
78
- - name: Inject version
79
- run: |
80
- VERSION=${{ needs.generate-docs-assets.outputs.cli_version }}
81
- sed -i "6iVersion: [$VERSION](https://pypi.org/project/qbraid-cli/$VERSION)\n" qbraid_docs/cli/api-reference/qbraid.mdx
82
-
83
- - name: Set up Node.js
84
- uses: actions/setup-node@v5
85
- with:
86
- node-version: '22'
87
-
88
- - name: Install dependencies
89
- run: |
90
- cd qbraid_docs
91
- npm install
92
-
93
- - name: Run prettier fixes
94
- run: |
95
- cd qbraid_docs
96
- npx prettier --write cli/api-reference/qbraid*.mdx
97
-
98
- - name: Setup Git config
99
- run: |
100
- git config --global user.name 'qbraidTeam'
101
- git config --global user.email 'qbraid.team@qbraid.com'
102
-
103
- - name: Commit and push changes
104
- id: commit_and_push
105
- run: |
106
- cd qbraid_docs
107
- git add cli/api-reference/
108
- git commit -m "qBraid-CLI API reference docs update for version $VERSION"
109
- git push origin qbraid-cli-bot/${{ github.run_id }}
110
-
111
- - name: Create Pull Request
112
- id: create_pr
113
- run: |
114
- cd qbraid_docs
115
- VERSION=${{ needs.generate-docs-assets.outputs.cli_version }}
116
- PR_URL=$(gh pr create -B main -H qbraid-cli-bot/${{ github.run_id }} --title "Update qBraid-CLI version $VERSION" --body "This PR updates the qBraid-CLI API reference docs for the latest release version $VERSION")
117
- PR_NUMBER=$(echo "$PR_URL" | grep -o '[0-9]*$')
118
- echo "url=$PR_URL" >> $GITHUB_OUTPUT
119
- echo "number=$PR_NUMBER" >> $GITHUB_OUTPUT
120
- env:
121
- GH_TOKEN: ${{ secrets.BOT_TOKEN }}
122
-
123
- - name: Summary
124
- run: |
125
- VERSION=${{ needs.generate-docs-assets.outputs.cli_version }}
126
- PR_URL=${{ steps.create_pr.outputs.url }}
127
- PR_NUMBER=${{ steps.create_pr.outputs.number }}
128
- echo "Opened PR [#$PR_NUMBER]($PR_URL) to update CLI docs for version **$VERSION**." >> $GITHUB_STEP_SUMMARY