qbraid-cli 0.8.2__tar.gz → 0.8.4__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 (133) hide show
  1. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/.github/ISSUE_TEMPLATE/bug_report.yml +1 -8
  2. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -9
  3. qbraid_cli-0.8.4/.github/workflows/bump-version.yml +71 -0
  4. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/.github/workflows/docs.yml +3 -3
  5. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/.github/workflows/format.yml +3 -3
  6. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/.github/workflows/main.yml +9 -13
  7. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/.github/workflows/pre-release.yml +3 -3
  8. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/.github/workflows/publish.yml +2 -2
  9. qbraid_cli-0.8.4/.github/workflows/tag-on-merge.yml +36 -0
  10. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/.gitignore +3 -0
  11. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/CONTRIBUTING.md +5 -0
  12. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/PKG-INFO +13 -14
  13. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/README.md +7 -6
  14. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/pyproject.toml +10 -16
  15. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/qbraid_cli/_version.py +2 -2
  16. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/qbraid_cli/envs/app.py +10 -6
  17. qbraid_cli-0.8.4/qbraid_cli/envs/create.py +29 -0
  18. qbraid_cli-0.8.4/qbraid_cli/kernels/app.py +98 -0
  19. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/qbraid_cli/main.py +1 -1
  20. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/qbraid_cli.egg-info/PKG-INFO +13 -14
  21. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/qbraid_cli.egg-info/SOURCES.txt +3 -3
  22. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/qbraid_cli.egg-info/requires.txt +2 -3
  23. qbraid_cli-0.8.4/tests/kernels/test_kernels_list.py +77 -0
  24. qbraid_cli-0.8.4/tools/bump_version.py +28 -0
  25. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/tools/split_md.py +0 -0
  26. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/tools/stamp_pre_release.py +3 -3
  27. qbraid_cli-0.8.2/qbraid_cli/envs/create.py +0 -61
  28. qbraid_cli-0.8.2/qbraid_cli/kernels/app.py +0 -113
  29. qbraid_cli-0.8.2/tests/envs/test_envs_create.py +0 -67
  30. qbraid_cli-0.8.2/tests/envs/test_envs_create_qbraid_env_assets.py +0 -79
  31. qbraid_cli-0.8.2/tests/envs/test_envs_create_validate_env_name.py +0 -69
  32. qbraid_cli-0.8.2/tests/kernels/test_kernels_list.py +0 -74
  33. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/.env.example +0 -0
  34. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  35. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/.readthedocs.yml +0 -0
  36. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/LICENSE +0 -0
  37. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/MANIFEST.IN +0 -0
  38. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/Makefile +0 -0
  39. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/docs/Makefile +0 -0
  40. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/docs/_static/api-key.png +0 -0
  41. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/docs/_static/cards/jupyter.png +0 -0
  42. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/docs/_static/cards/python.png +0 -0
  43. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/docs/_static/cards/terminal.png +0 -0
  44. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/docs/_static/favicon.ico +0 -0
  45. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/docs/_static/logo.png +0 -0
  46. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/docs/_static/style/custom.css +0 -0
  47. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/docs/_static/style/s4defs-roles.css +0 -0
  48. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/docs/cli/configure.rst +0 -0
  49. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/docs/cli/credits.rst +0 -0
  50. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/docs/cli/devices-list.rst +0 -0
  51. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/docs/cli/devices.rst +0 -0
  52. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/docs/cli/envs-activate.rst +0 -0
  53. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/docs/cli/envs-list.rst +0 -0
  54. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/docs/cli/envs-uninstall.rst +0 -0
  55. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/docs/cli/envs.rst +0 -0
  56. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/docs/cli/jobs-add.rst +0 -0
  57. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/docs/cli/jobs-disable.rst +0 -0
  58. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/docs/cli/jobs-enable.rst +0 -0
  59. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/docs/cli/jobs-list.rst +0 -0
  60. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/docs/cli/jobs.rst +0 -0
  61. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/docs/cli/kernels.rst +0 -0
  62. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/docs/cli/qbraid.rst +0 -0
  63. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/docs/conf.py +0 -0
  64. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/docs/guide/overview.rst +0 -0
  65. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/docs/index.rst +0 -0
  66. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/docs/make.bat +0 -0
  67. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/docs/requirements.txt +0 -0
  68. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/qbraid_cli/__init__.py +0 -0
  69. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/qbraid_cli/admin/__init__.py +0 -0
  70. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/qbraid_cli/admin/app.py +0 -0
  71. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/qbraid_cli/admin/buildlogs.py +0 -0
  72. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/qbraid_cli/admin/headers.py +0 -0
  73. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/qbraid_cli/admin/validation.py +0 -0
  74. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/qbraid_cli/configure/__init__.py +0 -0
  75. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/qbraid_cli/configure/actions.py +0 -0
  76. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/qbraid_cli/configure/app.py +0 -0
  77. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/qbraid_cli/credits/__init__.py +0 -0
  78. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/qbraid_cli/credits/app.py +0 -0
  79. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/qbraid_cli/devices/__init__.py +0 -0
  80. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/qbraid_cli/devices/app.py +0 -0
  81. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/qbraid_cli/devices/validation.py +0 -0
  82. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/qbraid_cli/envs/__init__.py +0 -0
  83. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/qbraid_cli/envs/activate.py +0 -0
  84. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/qbraid_cli/envs/data_handling.py +0 -0
  85. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/qbraid_cli/exceptions.py +0 -0
  86. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/qbraid_cli/handlers.py +0 -0
  87. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/qbraid_cli/jobs/__init__.py +0 -0
  88. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/qbraid_cli/jobs/app.py +0 -0
  89. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/qbraid_cli/jobs/toggle_braket.py +0 -0
  90. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/qbraid_cli/jobs/validation.py +0 -0
  91. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/qbraid_cli/kernels/__init__.py +0 -0
  92. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/qbraid_cli/pip/__init__.py +0 -0
  93. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/qbraid_cli/pip/app.py +0 -0
  94. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/qbraid_cli/pip/hooks.py +0 -0
  95. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/qbraid_cli/py.typed +0 -0
  96. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/qbraid_cli.egg-info/dependency_links.txt +0 -0
  97. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/qbraid_cli.egg-info/entry_points.txt +0 -0
  98. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/qbraid_cli.egg-info/top_level.txt +0 -0
  99. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/ruff.toml +0 -0
  100. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/setup.cfg +0 -0
  101. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/tests/__init__.py +0 -0
  102. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/tests/configure/__init__.py +0 -0
  103. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/tests/configure/test_configure_prompt_for_config.py +0 -0
  104. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/tests/configure/test_configure_set.py +0 -0
  105. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/tests/configure/test_configure_validate_input.py +0 -0
  106. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/tests/credits/__init__.py +0 -0
  107. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/tests/credits/test_credits_value.py +0 -0
  108. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/tests/devices/__init__.py +0 -0
  109. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/tests/devices/test_devices_list.py +0 -0
  110. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/tests/devices/test_devices_validations.py +0 -0
  111. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/tests/envs/__init__.py +0 -0
  112. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/tests/envs/test_envs_activate.py +0 -0
  113. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/tests/envs/test_envs_activate_find_shell_rc.py +0 -0
  114. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/tests/envs/test_envs_activate_print_command.py +0 -0
  115. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/tests/envs/test_envs_activate_pyenv.py +0 -0
  116. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/tests/envs/test_envs_list.py +0 -0
  117. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/tests/envs/test_envs_remove.py +0 -0
  118. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/tests/jobs/__init__.py +0 -0
  119. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/tests/jobs/test_jobs_disable.py +0 -0
  120. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/tests/jobs/test_jobs_enable.py +0 -0
  121. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/tests/jobs/test_jobs_list.py +0 -0
  122. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/tests/jobs/test_jobs_state.py +0 -0
  123. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/tests/jobs/test_jobs_toggle_braket_confirm.py +0 -0
  124. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/tests/jobs/test_jobs_toggle_braket_disable.py +0 -0
  125. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/tests/jobs/test_jobs_toggle_braket_enable.py +0 -0
  126. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/tests/jobs/test_jobs_toggle_braket_get_data.py +0 -0
  127. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/tests/jobs/test_jobs_validate_get_state.py +0 -0
  128. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/tests/jobs/test_jobs_validate_handle_state.py +0 -0
  129. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/tests/jobs/test_jobs_validate_library.py +0 -0
  130. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/tests/kernels/__init__.py +0 -0
  131. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/tools/create_dev_build.sh +0 -0
  132. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/tools/install_wheel_extras.sh +0 -0
  133. {qbraid_cli-0.8.2 → qbraid_cli-0.8.4}/tools/split_rst.py +0 -0
@@ -12,6 +12,7 @@ body:
12
12
  attributes:
13
13
  label: Environment
14
14
  value: |
15
+ - **qBraid-CORE version**:
15
16
  - **qBraid-CLI version**:
16
17
  - **Python version**:
17
18
  - **Operating system**:
@@ -31,11 +32,3 @@ body:
31
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.
32
33
  validations:
33
34
  required: false
34
-
35
- - type: checkboxes
36
- id: agreement
37
- attributes:
38
- label: 'Please confirm the following:'
39
- options:
40
- - label: 'I have searched the existing issues and confirm this is a new bug report.'
41
- required: true
@@ -23,12 +23,3 @@ body:
23
23
  description: "Do you have an idea for how this could be implemented? Please include those details here."
24
24
  validations:
25
25
  required: false
26
-
27
- - type: checkboxes
28
- id: agreement
29
- attributes:
30
- label: 'Please confirm the following:'
31
- description: 'Understanding that feature requests are evaluated for their applicability and benefit to the community, and not all requests may be implemented.'
32
- options:
33
- - label: 'I have searched the existing issues and confirm this is a new feature request.'
34
- required: true
@@ -0,0 +1,71 @@
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@v4
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@v5
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
@@ -12,11 +12,11 @@ jobs:
12
12
  runs-on: ubuntu-latest
13
13
 
14
14
  steps:
15
- - uses: actions/checkout@v3
15
+ - uses: actions/checkout@v4
16
16
  - name: Set up Python
17
- uses: actions/setup-python@v4
17
+ uses: actions/setup-python@v5
18
18
  with:
19
- python-version: '3.10'
19
+ python-version: '3.11'
20
20
  cache: pip
21
21
  - name: Install dependencies
22
22
  run: |
@@ -10,11 +10,11 @@ jobs:
10
10
  runs-on: ubuntu-latest
11
11
 
12
12
  steps:
13
- - uses: actions/checkout@v3
13
+ - uses: actions/checkout@v4
14
14
  - name: Set up Python
15
- uses: actions/setup-python@v4
15
+ uses: actions/setup-python@v5
16
16
  with:
17
- python-version: '3.10'
17
+ python-version: '3.11'
18
18
  - name: Install dependencies
19
19
  run: |
20
20
  pip install --upgrade pip
@@ -15,9 +15,9 @@ jobs:
15
15
  python-version: ['3.11']
16
16
 
17
17
  steps:
18
- - uses: actions/checkout@v3
18
+ - uses: actions/checkout@v4
19
19
  - name: Set up Python ${{ matrix.python-version }}
20
- uses: actions/setup-python@v4
20
+ uses: actions/setup-python@v5
21
21
  with:
22
22
  python-version: ${{ matrix.python-version }}
23
23
  cache: pip
@@ -29,7 +29,7 @@ jobs:
29
29
  run: |
30
30
  python -m build
31
31
  - name: Upload built package
32
- uses: actions/upload-artifact@v3
32
+ uses: actions/upload-artifact@v4
33
33
  with:
34
34
  name: built-package
35
35
  path: dist/*.whl
@@ -43,14 +43,14 @@ jobs:
43
43
  python-version: ['3.9', '3.10', '3.11', '3.12']
44
44
 
45
45
  steps:
46
- - uses: actions/checkout@v3
46
+ - uses: actions/checkout@v4
47
47
  - name: Set up Python ${{ matrix.python-version }}
48
- uses: actions/setup-python@v4
48
+ uses: actions/setup-python@v5
49
49
  with:
50
50
  python-version: ${{ matrix.python-version }}
51
51
  cache: pip
52
52
  - name: Download built package
53
- uses: actions/download-artifact@v3
53
+ uses: actions/download-artifact@v4
54
54
  with:
55
55
  name: built-package
56
56
  path: dist
@@ -64,19 +64,15 @@ jobs:
64
64
  shell: pwsh
65
65
  - name: Install testing dependencies
66
66
  run: |
67
- pip install pytest coverage
67
+ pip install pytest pytest-cov
68
68
  - name: Run tests with pytest
69
69
  run: |
70
- coverage run -m pytest -x tests
71
- coverage combine
72
- coverage report
73
- coverage html
74
- coverage xml
70
+ pytest --cov=qbraid_cli tests/ --cov-report=html --cov-report=xml --cov-report=term --cov-config=pyproject.toml
75
71
  env:
76
72
  QBRAID_API_KEY: ${{ secrets.QBRAID_API_KEY }}
77
73
  - name: Upload coverage to Codecov
78
74
  if: matrix.python-version == '3.11' && matrix.os == 'ubuntu-latest'
79
- uses: codecov/codecov-action@v3
75
+ uses: codecov/codecov-action@v4.0.1
80
76
  with:
81
77
  token: ${{ secrets.CODECOV_TOKEN }}
82
78
  fail_ci_if_error: false
@@ -9,12 +9,12 @@ jobs:
9
9
  environment: publish
10
10
  runs-on: ubuntu-latest
11
11
  steps:
12
- - uses: actions/checkout@v3
12
+ - uses: actions/checkout@v4
13
13
  with:
14
14
  fetch-depth: 1
15
15
 
16
16
  - name: Set up Python
17
- uses: actions/setup-python@v4
17
+ uses: actions/setup-python@v5
18
18
  with:
19
19
  python-version: '3.11'
20
20
 
@@ -24,7 +24,7 @@ jobs:
24
24
  - name: Build binary wheel + source tarball
25
25
  id: build-dev
26
26
  run: |
27
- export PRE_RELEASE_VERSION=$(python tools/stamp_pre_release.py)
27
+ export PRE_RELEASE_VERSION=$(python tools/stamp_pre_release.py qbraid_cli)
28
28
  [[ "$PRE_RELEASE_VERSION" =~ .*(-a\.|-b\.|-rc\.).* ]] && echo "Deploying pre-release version '$PRE_RELEASE_VERSION'" || (echo "not pre-release version"; exit 0)
29
29
  out_dir="${PWD}/dist"
30
30
  tools/create_dev_build.sh $PRE_RELEASE_VERSION "${out_dir}"
@@ -9,12 +9,12 @@ jobs:
9
9
  environment: publish
10
10
  runs-on: ubuntu-latest
11
11
  steps:
12
- - uses: actions/checkout@v3
12
+ - uses: actions/checkout@v4
13
13
  with:
14
14
  fetch-depth: 1
15
15
 
16
16
  - name: Set up Python
17
- uses: actions/setup-python@v4
17
+ uses: actions/setup-python@v5
18
18
  with:
19
19
  python-version: '3.11'
20
20
 
@@ -0,0 +1,36 @@
1
+ name: Tag on PR Merge
2
+
3
+ on:
4
+ pull_request:
5
+ types: [closed]
6
+
7
+ jobs:
8
+ tag-version:
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
+ permissions:
12
+ contents: write
13
+ steps:
14
+ - name: Extract version
15
+ id: extract_version
16
+ run: |
17
+ VERSION=$(echo '${{ github.event.pull_request.title }}' | sed -E 's/Bump project version to (.*)/\1/')
18
+ echo "version=$VERSION" >> $GITHUB_OUTPUT
19
+
20
+ - name: Checkout code
21
+ uses: actions/checkout@v4
22
+ with:
23
+ ref: 'main'
24
+
25
+ - name: Setup Git config
26
+ run: |
27
+ git config --global user.name 'qbraidTeam'
28
+ git config --global user.email 'qbraid.team@qbraid.com'
29
+
30
+ - name: Create Tag
31
+ run: |
32
+ VERSION=${{ steps.extract_version.outputs.version }}
33
+ git tag v$VERSION
34
+ git push origin v$VERSION
35
+ env:
36
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -3,6 +3,9 @@ __pycache__/
3
3
  *.py[cod]
4
4
  *$py.class
5
5
 
6
+ .DS_Store
7
+ .vscode
8
+
6
9
  # C extensions
7
10
  *.so
8
11
 
@@ -1,5 +1,10 @@
1
1
  # Contributing
2
2
 
3
+ [![CI](https://github.com/qBraid/qBraid-CLI/actions/workflows/main.yml/badge.svg?branch=main)](https://github.com/qBraid/qBraid-CLI/actions/workflows/main.yml)
4
+ [![Documentation Status](https://readthedocs.com/projects/qbraid-qbraid-cli/badge/?version=latest)](https://docs.qbraid.com/projects/cli/en/latest/?badge=latest)
5
+ [![codecov](https://codecov.io/gh/qBraid/qBraid-CLI/graph/badge.svg?token=wVNrLILy9c)](https://codecov.io/gh/qBraid/qBraid-CLI)
6
+
7
+
3
8
  Welcome! We're delighted that you're interested in contributing. Your help is essential for keeping the project great.
4
9
 
5
10
  ## Getting Started
@@ -1,14 +1,13 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: qbraid-cli
3
- Version: 0.8.2
3
+ Version: 0.8.4
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
6
  License: Proprietary
7
- Project-URL: Homepage, https://www.qbraid.com/
8
- Project-URL: Documentation, https://docs.qbraid.com/projects/cli/en/stable/guide/overview.html
9
- Project-URL: Bug Tracker, https://github.com/qBraid/qBraid-Lab/issues
7
+ Project-URL: Homepage, https://docs.qbraid.com/cli/user-guide/overview
8
+ Project-URL: Documentation, https://docs.qbraid.com/cli/api-reference/qbraid
9
+ Project-URL: Bug Tracker, https://github.com/qBraid/community/issues
10
10
  Project-URL: Discord, https://discord.gg/KugF6Cnncm
11
- Project-URL: Launch on Lab, https://account.qbraid.com/?gitHubUrl=https://github.com/qBraid/qBraid-Lab.git
12
11
  Keywords: qbraid,cli,quantum,cloud
13
12
  Classifier: Development Status :: 5 - Production/Stable
14
13
  Classifier: Intended Audience :: Developers
@@ -29,9 +28,7 @@ Description-Content-Type: text/markdown
29
28
  License-File: LICENSE
30
29
  Requires-Dist: typer>=0.12.1
31
30
  Requires-Dist: rich>=10.11.0
32
- Requires-Dist: jupyter_client<9.0.0,>=7.0.0
33
- Requires-Dist: ipykernel
34
- Requires-Dist: qbraid-core>=0.1.13
31
+ Requires-Dist: qbraid-core[environments]>=0.1.17
35
32
  Provides-Extra: jobs
36
33
  Requires-Dist: amazon-braket-sdk>=1.48.1; extra == "jobs"
37
34
  Provides-Extra: dev
@@ -39,18 +36,20 @@ Requires-Dist: ruff; extra == "dev"
39
36
  Requires-Dist: isort; extra == "dev"
40
37
  Requires-Dist: black; extra == "dev"
41
38
  Requires-Dist: pytest; extra == "dev"
39
+ Requires-Dist: pytest-cov; extra == "dev"
42
40
 
43
41
  <img width="full" alt="qbraid_cli" src="https://qbraid-static.s3.amazonaws.com/logos/qbraid-cli-banner.png">
44
42
 
45
- [![Documentation](https://img.shields.io/badge/Documentation-DF0982)](https://docs.qbraid.com/projects/cli/en/stable/guide/overview.html)
43
+ [![Documentation](https://img.shields.io/badge/Documentation-DF0982)](https://docs.qbraid.com/cli/user-guide/overview)
46
44
  [![PyPI version](https://img.shields.io/pypi/v/qbraid-cli.svg?color=blue)](https://pypi.org/project/qbraid-cli/)
47
45
  [![Python verions](https://img.shields.io/pypi/pyversions/qbraid-cli.svg?color=blue)](https://pypi.org/project/qbraid-cli/)
48
46
  [![Downloads](https://static.pepy.tech/badge/qbraid-cli)](https://pepy.tech/project/qbraid-cli)
49
- [![GitHub](https://img.shields.io/badge/issue_tracking-github-blue?logo=github)](https://github.com/qBraid/qBraid-Lab/issues)
47
+ [![GitHub](https://img.shields.io/badge/issue_tracking-github-blue?logo=github)](https://github.com/qBraid/community/issues)
48
+ [![Stack Overflow](https://img.shields.io/badge/StackOverflow-qbraid-orange?logo=stackoverflow)](https://stackoverflow.com/questions/tagged/qbraid)
50
49
 
51
50
  Command Line Interface for interacting with all parts of the qBraid platform.
52
51
 
53
- The **qBraid CLI** is a versatile command-line interface tool designed for seamless interaction with qBraid cloud services and quantum software management tools. Initially exclusive to the [qBraid Lab](https://docs.qbraid.com/projects/lab/en/latest/lab/overview.html) platform, the CLI now supports local installations as well. This enhancement broadens access to features like [qBraid Quantum Jobs](https://docs.qbraid.com/projects/lab/en/latest/lab/quantum_jobs.html), enabling direct acess to QPU devices from leading providers like IonQ, Oxford Quantum Circuits, QuEra, and Rigetti, as well as on-demand simulators from AWS, all using qBraid credits, with no additional access keys required.
52
+ The **qBraid CLI** is a versatile command-line interface tool designed for seamless interaction with qBraid cloud services and quantum software management tools. Initially exclusive to the [qBraid Lab](https://docs.qbraid.com/lab/user-guide/overview) platform, the CLI now supports local installations as well. This enhancement broadens access to features like [qBraid Quantum Jobs](https://docs.qbraid.com/cli/user-guide/quantum-jobs), enabling direct acess to QPU devices from leading providers like IonQ, Oxford Quantum Circuits, QuEra, Rigetti, and IQM, as well as on-demand simulators from qBraid and AWS, all using qBraid [credits](https://docs.qbraid.com/home/pricing), with no additional access keys required.
54
53
 
55
54
  ## Getting Started
56
55
 
@@ -59,7 +58,7 @@ The qBraid-CLI comes pre-installed and pre-configured in qBraid Lab:
59
58
  - [Launch qBraid Lab &rarr;](https://lab.qbraid.com/)
60
59
  - [Make an account &rarr;](https://account.qbraid.com/)
61
60
 
62
- For help, see qBraid Lab User Guide: [Getting Started](https://docs.qbraid.com/projects/lab/en/latest/lab/getting_started.html).
61
+ For help, see qBraid Lab User Guide: [Getting Started](https://docs.qbraid.com/lab/user-guide/getting-started).
63
62
 
64
63
  You can also install the qBraid-CLI from PyPI with:
65
64
 
@@ -101,7 +100,7 @@ $ qbraid
101
100
 
102
101
  - Use 'qbraid --version' to see the current version.
103
102
 
104
- Reference Docs: https://docs.qbraid.com/projects/cli/en/stable/guide/overview.html
103
+ Reference Docs: https://docs.qbraid.com/cli/api-reference/qbraid
105
104
  ```
106
105
 
107
106
  A qBraid CLI command has the following structure:
@@ -156,7 +155,7 @@ $ qbraid --version
156
155
 
157
156
  ## Magic Commands
158
157
 
159
- You can also access the CLI directly from within [Notebooks](https://docs.qbraid.com/projects/lab/en/latest/lab/notebooks.html) using IPython [magic commands](https://ipython.readthedocs.io/en/stable/interactive/magics.html). First, configure the qBraid magic commands extension using:
158
+ You can also access the CLI directly from within [Notebooks](https://docs.qbraid.com/lab/user-guide/notebooks) using IPython [magic commands](https://ipython.readthedocs.io/en/stable/interactive/magics.html). First, configure the qBraid magic commands extension using:
160
159
 
161
160
  ```bash
162
161
  $ qbraid configure magic
@@ -1,14 +1,15 @@
1
1
  <img width="full" alt="qbraid_cli" src="https://qbraid-static.s3.amazonaws.com/logos/qbraid-cli-banner.png">
2
2
 
3
- [![Documentation](https://img.shields.io/badge/Documentation-DF0982)](https://docs.qbraid.com/projects/cli/en/stable/guide/overview.html)
3
+ [![Documentation](https://img.shields.io/badge/Documentation-DF0982)](https://docs.qbraid.com/cli/user-guide/overview)
4
4
  [![PyPI version](https://img.shields.io/pypi/v/qbraid-cli.svg?color=blue)](https://pypi.org/project/qbraid-cli/)
5
5
  [![Python verions](https://img.shields.io/pypi/pyversions/qbraid-cli.svg?color=blue)](https://pypi.org/project/qbraid-cli/)
6
6
  [![Downloads](https://static.pepy.tech/badge/qbraid-cli)](https://pepy.tech/project/qbraid-cli)
7
- [![GitHub](https://img.shields.io/badge/issue_tracking-github-blue?logo=github)](https://github.com/qBraid/qBraid-Lab/issues)
7
+ [![GitHub](https://img.shields.io/badge/issue_tracking-github-blue?logo=github)](https://github.com/qBraid/community/issues)
8
+ [![Stack Overflow](https://img.shields.io/badge/StackOverflow-qbraid-orange?logo=stackoverflow)](https://stackoverflow.com/questions/tagged/qbraid)
8
9
 
9
10
  Command Line Interface for interacting with all parts of the qBraid platform.
10
11
 
11
- The **qBraid CLI** is a versatile command-line interface tool designed for seamless interaction with qBraid cloud services and quantum software management tools. Initially exclusive to the [qBraid Lab](https://docs.qbraid.com/projects/lab/en/latest/lab/overview.html) platform, the CLI now supports local installations as well. This enhancement broadens access to features like [qBraid Quantum Jobs](https://docs.qbraid.com/projects/lab/en/latest/lab/quantum_jobs.html), enabling direct acess to QPU devices from leading providers like IonQ, Oxford Quantum Circuits, QuEra, and Rigetti, as well as on-demand simulators from AWS, all using qBraid credits, with no additional access keys required.
12
+ The **qBraid CLI** is a versatile command-line interface tool designed for seamless interaction with qBraid cloud services and quantum software management tools. Initially exclusive to the [qBraid Lab](https://docs.qbraid.com/lab/user-guide/overview) platform, the CLI now supports local installations as well. This enhancement broadens access to features like [qBraid Quantum Jobs](https://docs.qbraid.com/cli/user-guide/quantum-jobs), enabling direct acess to QPU devices from leading providers like IonQ, Oxford Quantum Circuits, QuEra, Rigetti, and IQM, as well as on-demand simulators from qBraid and AWS, all using qBraid [credits](https://docs.qbraid.com/home/pricing), with no additional access keys required.
12
13
 
13
14
  ## Getting Started
14
15
 
@@ -17,7 +18,7 @@ The qBraid-CLI comes pre-installed and pre-configured in qBraid Lab:
17
18
  - [Launch qBraid Lab &rarr;](https://lab.qbraid.com/)
18
19
  - [Make an account &rarr;](https://account.qbraid.com/)
19
20
 
20
- For help, see qBraid Lab User Guide: [Getting Started](https://docs.qbraid.com/projects/lab/en/latest/lab/getting_started.html).
21
+ For help, see qBraid Lab User Guide: [Getting Started](https://docs.qbraid.com/lab/user-guide/getting-started).
21
22
 
22
23
  You can also install the qBraid-CLI from PyPI with:
23
24
 
@@ -59,7 +60,7 @@ $ qbraid
59
60
 
60
61
  - Use 'qbraid --version' to see the current version.
61
62
 
62
- Reference Docs: https://docs.qbraid.com/projects/cli/en/stable/guide/overview.html
63
+ Reference Docs: https://docs.qbraid.com/cli/api-reference/qbraid
63
64
  ```
64
65
 
65
66
  A qBraid CLI command has the following structure:
@@ -114,7 +115,7 @@ $ qbraid --version
114
115
 
115
116
  ## Magic Commands
116
117
 
117
- You can also access the CLI directly from within [Notebooks](https://docs.qbraid.com/projects/lab/en/latest/lab/notebooks.html) using IPython [magic commands](https://ipython.readthedocs.io/en/stable/interactive/magics.html). First, configure the qBraid magic commands extension using:
118
+ You can also access the CLI directly from within [Notebooks](https://docs.qbraid.com/lab/user-guide/notebooks) using IPython [magic commands](https://ipython.readthedocs.io/en/stable/interactive/magics.html). First, configure the qBraid magic commands extension using:
118
119
 
119
120
  ```bash
120
121
  $ qbraid configure magic
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "qbraid-cli"
7
- version = "0.8.2"
7
+ version = "0.8.4"
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" }]
@@ -29,22 +29,19 @@ classifiers = [
29
29
  dependencies = [
30
30
  "typer>=0.12.1",
31
31
  "rich>=10.11.0",
32
- "jupyter_client>=7.0.0,<9.0.0",
33
- "ipykernel",
34
- "qbraid-core>=0.1.13",
32
+ "qbraid-core[environments]>=0.1.17",
35
33
  ]
36
34
  requires-python = ">= 3.9"
37
35
 
38
36
  [project.urls]
39
- Homepage = "https://www.qbraid.com/"
40
- Documentation = "https://docs.qbraid.com/projects/cli/en/stable/guide/overview.html"
41
- "Bug Tracker" = "https://github.com/qBraid/qBraid-Lab/issues"
37
+ Homepage = "https://docs.qbraid.com/cli/user-guide/overview"
38
+ Documentation = "https://docs.qbraid.com/cli/api-reference/qbraid"
39
+ "Bug Tracker" = "https://github.com/qBraid/community/issues"
42
40
  Discord = "https://discord.gg/KugF6Cnncm"
43
- "Launch on Lab" = "https://account.qbraid.com/?gitHubUrl=https://github.com/qBraid/qBraid-Lab.git"
44
41
 
45
42
  [project.optional-dependencies]
46
43
  jobs = ["amazon-braket-sdk>=1.48.1"]
47
- dev = ["ruff", "isort", "black", "pytest"]
44
+ dev = ["ruff", "isort", "black", "pytest", "pytest-cov"]
48
45
 
49
46
  [project.scripts]
50
47
  qbraid = "qbraid_cli.main:app"
@@ -54,7 +51,7 @@ write_to = "qbraid_cli/_version.py"
54
51
 
55
52
  [tool.black]
56
53
  line-length = 100
57
- target-version = ["py39", "py310", "py311", "py312"]
54
+ target-version = ["py39", "py310", "py311"]
58
55
 
59
56
  [tool.isort]
60
57
  profile = "black"
@@ -80,6 +77,9 @@ testpaths = ["tests"]
80
77
  [tool.coverage.run]
81
78
  parallel = true
82
79
  source = ["qbraid_cli"]
80
+ omit = [
81
+ "**/qbraid_cli/admin/buildlogs.py"
82
+ ]
83
83
 
84
84
  [tool.coverage.report]
85
85
  show_missing = true
@@ -93,9 +93,3 @@ exclude_lines = [
93
93
  "if TYPE_CHECKING:",
94
94
  "logger.debug"
95
95
  ]
96
-
97
- [tool.coverage.html]
98
- directory = "build/coverage"
99
-
100
- [tool.coverage.xml]
101
- output = "build/coverage/coverage.xml"
@@ -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+ga972fd5'
16
- __version_tuple__ = version_tuple = (0, 1, 'dev1', 'ga972fd5')
15
+ __version__ = version = '0.1.dev1+g00f25d1'
16
+ __version_tuple__ = version_tuple = (0, 1, 'dev1', 'g00f25d1')
@@ -224,15 +224,19 @@ def envs_list():
224
224
  else 0
225
225
  )
226
226
 
227
- print("# qbraid environments:")
228
- print("#")
229
- print("")
227
+ output_lines = []
228
+ output_lines.append("# qbraid environments:")
229
+ output_lines.append("#")
230
+ output_lines.append("")
230
231
 
231
232
  for alias, path in sorted_alias_path_pairs:
232
233
  mark = "*" if path == current_env_path else " "
233
- # Format each line with spacing based on the longest alias for alignment
234
- line = f"{alias.ljust(max_alias_length+3)}{mark} {path}" # fix the most optimal spacing
235
- console.print(line)
234
+ line = f"{alias.ljust(max_alias_length + 3)}{mark} {path}"
235
+ output_lines.append(line)
236
+
237
+ final_output = "\n".join(output_lines)
238
+
239
+ console.print(final_output)
236
240
 
237
241
 
238
242
  @envs_app.command(name="activate")
@@ -0,0 +1,29 @@
1
+ # Copyright (c) 2024, qBraid Development Team
2
+ # All rights reserved.
3
+
4
+ """
5
+ Module supporting 'qbraid envs create' command.
6
+
7
+ """
8
+
9
+
10
+ def create_venv(*args, **kwargs) -> None:
11
+ """Create a python virtual environment for the qBraid environment."""
12
+ from qbraid_core.services.environments import create_local_venv
13
+
14
+ return create_local_venv(*args, **kwargs)
15
+
16
+
17
+ def update_state_json(*ags, **kwargs) -> None:
18
+ """Update the state.json file for the qBraid environment."""
19
+ from qbraid_core.services.environments.state import update_state_json as update_state
20
+
21
+ return update_state(*ags, **kwargs)
22
+
23
+
24
+ def create_qbraid_env_assets(slug: str, alias: str, kernel_name: str, slug_path: str) -> None:
25
+ """Create a qBraid environment including python venv, PS1 configs,
26
+ kernel resource files, and qBraid state.json."""
27
+ from qbraid_core.services.environments.create import create_qbraid_env_assets as create_assets
28
+
29
+ return create_assets(slug, alias, kernel_name, slug_path)
@@ -0,0 +1,98 @@
1
+ # Copyright (c) 2024, qBraid Development Team
2
+ # All rights reserved.
3
+
4
+ """
5
+ Module defining commands in the 'qbraid kernels' namespace.
6
+
7
+ """
8
+ import typer
9
+ from rich.console import Console
10
+
11
+ from qbraid_cli.handlers import handle_error
12
+
13
+ kernels_app = typer.Typer(help="Manage qBraid kernels.")
14
+
15
+
16
+ @kernels_app.command(name="list")
17
+ def kernels_list():
18
+ """List all available kernels."""
19
+ from qbraid_core.services.environments.kernels import get_all_kernels
20
+
21
+ console = Console()
22
+ # Get the list of kernelspecs
23
+ kernelspecs: dict = get_all_kernels()
24
+
25
+ if len(kernelspecs) == 0:
26
+ console.print("No qBraid kernels are active.")
27
+ console.print("\nUse 'qbraid kernels add' to add a new kernel.")
28
+ return
29
+
30
+ longest_kernel_name = max(len(kernel_name) for kernel_name in kernelspecs)
31
+ spacing = longest_kernel_name + 10
32
+
33
+ output_lines = []
34
+ output_lines.append("# qbraid kernels:")
35
+ output_lines.append("#")
36
+ output_lines.append("")
37
+
38
+ # Ensure 'python3' kernel is printed first if it exists
39
+ default_kernel_name = "python3"
40
+ python3_kernel_info = kernelspecs.pop(default_kernel_name, None)
41
+ if python3_kernel_info:
42
+ line = f"{default_kernel_name.ljust(spacing)}{python3_kernel_info['resource_dir']}"
43
+ output_lines.append(line)
44
+ # print rest of the kernels
45
+ for kernel_name, kernel_info in sorted(kernelspecs.items()):
46
+ line = f"{kernel_name.ljust(spacing)}{kernel_info['resource_dir']}"
47
+ output_lines.append(line)
48
+
49
+ final_output = "\n".join(output_lines)
50
+
51
+ console.print(final_output)
52
+
53
+
54
+ @kernels_app.command(name="add")
55
+ def kernels_add(
56
+ environment: str = typer.Argument(
57
+ ..., help="Name of environment for which to add ipykernel. Values from 'qbraid envs list'."
58
+ )
59
+ ):
60
+ """Add a kernel."""
61
+ from qbraid_core.services.environments.kernels import add_kernels
62
+
63
+ try:
64
+ add_kernels(environment)
65
+ except ValueError:
66
+ handle_error(
67
+ message="Failed to add kernel(s). Please verify that the environment exists.",
68
+ include_traceback=True,
69
+ )
70
+
71
+ console = Console()
72
+ console.print(f"\nSuccessfully added '{environment}' kernel(s).", highlight=False)
73
+
74
+
75
+ @kernels_app.command(name="remove")
76
+ def kernels_remove(
77
+ environment: str = typer.Argument(
78
+ ...,
79
+ help=("Name of environment for which to remove ipykernel. Values from 'qbraid envs list'."),
80
+ )
81
+ ):
82
+ """Remove a kernel."""
83
+ from qbraid_core.services.environments.kernels import remove_kernels
84
+
85
+ try:
86
+ remove_kernels(environment)
87
+ except ValueError:
88
+ handle_error(
89
+ message="Failed to remove kernel(s). Please verify that the environment exists.",
90
+ include_traceback=True,
91
+ )
92
+
93
+ console = Console()
94
+ console.print(f"\nSuccessfully removed '{environment}' kernel(s).", highlight=False)
95
+
96
+
97
+ if __name__ == "__main__":
98
+ kernels_app()