qbraid-cli 0.12.0a2__tar.gz → 0.12.0a4__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.
Files changed (52) hide show
  1. {qbraid_cli-0.12.0a2/qbraid_cli.egg-info → qbraid_cli-0.12.0a4}/PKG-INFO +1 -1
  2. {qbraid_cli-0.12.0a2 → qbraid_cli-0.12.0a4}/pyproject.toml +1 -1
  3. {qbraid_cli-0.12.0a2 → qbraid_cli-0.12.0a4}/qbraid_cli/account/app.py +2 -2
  4. {qbraid_cli-0.12.0a2 → qbraid_cli-0.12.0a4}/qbraid_cli/devices/app.py +42 -28
  5. {qbraid_cli-0.12.0a2 → qbraid_cli-0.12.0a4}/qbraid_cli/devices/validation.py +6 -2
  6. {qbraid_cli-0.12.0a2 → qbraid_cli-0.12.0a4}/qbraid_cli/envs/app.py +739 -93
  7. {qbraid_cli-0.12.0a2 → qbraid_cli-0.12.0a4}/qbraid_cli/jobs/app.py +58 -34
  8. {qbraid_cli-0.12.0a2 → qbraid_cli-0.12.0a4/qbraid_cli.egg-info}/PKG-INFO +1 -1
  9. {qbraid_cli-0.12.0a2 → qbraid_cli-0.12.0a4}/LICENSE +0 -0
  10. {qbraid_cli-0.12.0a2 → qbraid_cli-0.12.0a4}/README.md +0 -0
  11. {qbraid_cli-0.12.0a2 → qbraid_cli-0.12.0a4}/qbraid_cli/__init__.py +0 -0
  12. {qbraid_cli-0.12.0a2 → qbraid_cli-0.12.0a4}/qbraid_cli/_version.py +0 -0
  13. {qbraid_cli-0.12.0a2 → qbraid_cli-0.12.0a4}/qbraid_cli/account/__init__.py +0 -0
  14. {qbraid_cli-0.12.0a2 → qbraid_cli-0.12.0a4}/qbraid_cli/admin/__init__.py +0 -0
  15. {qbraid_cli-0.12.0a2 → qbraid_cli-0.12.0a4}/qbraid_cli/admin/app.py +0 -0
  16. {qbraid_cli-0.12.0a2 → qbraid_cli-0.12.0a4}/qbraid_cli/admin/headers.py +0 -0
  17. {qbraid_cli-0.12.0a2 → qbraid_cli-0.12.0a4}/qbraid_cli/admin/validation.py +0 -0
  18. {qbraid_cli-0.12.0a2 → qbraid_cli-0.12.0a4}/qbraid_cli/chat/__init__.py +0 -0
  19. {qbraid_cli-0.12.0a2 → qbraid_cli-0.12.0a4}/qbraid_cli/chat/app.py +0 -0
  20. {qbraid_cli-0.12.0a2 → qbraid_cli-0.12.0a4}/qbraid_cli/configure/__init__.py +0 -0
  21. {qbraid_cli-0.12.0a2 → qbraid_cli-0.12.0a4}/qbraid_cli/configure/actions.py +0 -0
  22. {qbraid_cli-0.12.0a2 → qbraid_cli-0.12.0a4}/qbraid_cli/configure/app.py +0 -0
  23. {qbraid_cli-0.12.0a2 → qbraid_cli-0.12.0a4}/qbraid_cli/configure/claude_config.py +0 -0
  24. {qbraid_cli-0.12.0a2 → qbraid_cli-0.12.0a4}/qbraid_cli/devices/__init__.py +0 -0
  25. {qbraid_cli-0.12.0a2 → qbraid_cli-0.12.0a4}/qbraid_cli/envs/__init__.py +0 -0
  26. {qbraid_cli-0.12.0a2 → qbraid_cli-0.12.0a4}/qbraid_cli/envs/activate.py +0 -0
  27. {qbraid_cli-0.12.0a2 → qbraid_cli-0.12.0a4}/qbraid_cli/envs/create.py +0 -0
  28. {qbraid_cli-0.12.0a2 → qbraid_cli-0.12.0a4}/qbraid_cli/envs/data_handling.py +0 -0
  29. {qbraid_cli-0.12.0a2 → qbraid_cli-0.12.0a4}/qbraid_cli/exceptions.py +0 -0
  30. {qbraid_cli-0.12.0a2 → qbraid_cli-0.12.0a4}/qbraid_cli/files/__init__.py +0 -0
  31. {qbraid_cli-0.12.0a2 → qbraid_cli-0.12.0a4}/qbraid_cli/files/app.py +0 -0
  32. {qbraid_cli-0.12.0a2 → qbraid_cli-0.12.0a4}/qbraid_cli/handlers.py +0 -0
  33. {qbraid_cli-0.12.0a2 → qbraid_cli-0.12.0a4}/qbraid_cli/jobs/__init__.py +0 -0
  34. {qbraid_cli-0.12.0a2 → qbraid_cli-0.12.0a4}/qbraid_cli/jobs/toggle_braket.py +0 -0
  35. {qbraid_cli-0.12.0a2 → qbraid_cli-0.12.0a4}/qbraid_cli/jobs/validation.py +0 -0
  36. {qbraid_cli-0.12.0a2 → qbraid_cli-0.12.0a4}/qbraid_cli/kernels/__init__.py +0 -0
  37. {qbraid_cli-0.12.0a2 → qbraid_cli-0.12.0a4}/qbraid_cli/kernels/app.py +0 -0
  38. {qbraid_cli-0.12.0a2 → qbraid_cli-0.12.0a4}/qbraid_cli/main.py +0 -0
  39. {qbraid_cli-0.12.0a2 → qbraid_cli-0.12.0a4}/qbraid_cli/mcp/__init__.py +0 -0
  40. {qbraid_cli-0.12.0a2 → qbraid_cli-0.12.0a4}/qbraid_cli/mcp/app.py +0 -0
  41. {qbraid_cli-0.12.0a2 → qbraid_cli-0.12.0a4}/qbraid_cli/mcp/serve.py +0 -0
  42. {qbraid_cli-0.12.0a2 → qbraid_cli-0.12.0a4}/qbraid_cli/pip/__init__.py +0 -0
  43. {qbraid_cli-0.12.0a2 → qbraid_cli-0.12.0a4}/qbraid_cli/pip/app.py +0 -0
  44. {qbraid_cli-0.12.0a2 → qbraid_cli-0.12.0a4}/qbraid_cli/pip/hooks.py +0 -0
  45. {qbraid_cli-0.12.0a2 → qbraid_cli-0.12.0a4}/qbraid_cli/py.typed +0 -0
  46. {qbraid_cli-0.12.0a2 → qbraid_cli-0.12.0a4}/qbraid_cli.egg-info/SOURCES.txt +0 -0
  47. {qbraid_cli-0.12.0a2 → qbraid_cli-0.12.0a4}/qbraid_cli.egg-info/dependency_links.txt +0 -0
  48. {qbraid_cli-0.12.0a2 → qbraid_cli-0.12.0a4}/qbraid_cli.egg-info/entry_points.txt +0 -0
  49. {qbraid_cli-0.12.0a2 → qbraid_cli-0.12.0a4}/qbraid_cli.egg-info/requires.txt +0 -0
  50. {qbraid_cli-0.12.0a2 → qbraid_cli-0.12.0a4}/qbraid_cli.egg-info/top_level.txt +0 -0
  51. {qbraid_cli-0.12.0a2 → qbraid_cli-0.12.0a4}/setup.cfg +0 -0
  52. {qbraid_cli-0.12.0a2 → qbraid_cli-0.12.0a4}/tests/test_version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: qbraid-cli
3
- Version: 0.12.0a2
3
+ Version: 0.12.0a4
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-Expression: LicenseRef-Proprietary
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "qbraid-cli"
7
- version = "0.12.0a2"
7
+ version = "0.12.0a4"
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" }]
@@ -22,9 +22,9 @@ def account_credits():
22
22
  """Get number of qBraid credits remaining."""
23
23
 
24
24
  def get_credits() -> float:
25
- from qbraid_core import QbraidClient
25
+ from qbraid_core.client import QbraidClientV1
26
26
 
27
- client = QbraidClient()
27
+ client = QbraidClientV1()
28
28
  return client.user_credits_value()
29
29
 
30
30
  qbraid_credits: float = run_progress_task(get_credits)
@@ -6,7 +6,7 @@ Module defining commands in the 'qbraid devices' namespace.
6
6
 
7
7
  """
8
8
 
9
- from typing import Any, Callable, Optional
9
+ from typing import Any, Optional
10
10
 
11
11
  import typer
12
12
  from rich.console import Console
@@ -18,9 +18,13 @@ devices_app = typer.Typer(help="Manage qBraid quantum devices.", no_args_is_help
18
18
 
19
19
 
20
20
  @devices_app.command(name="list")
21
- def devices_list( # pylint: disable=too-many-branches
21
+ def devices_list(
22
22
  status: Optional[str] = typer.Option(
23
- None, "--status", "-s", help="'ONLINE'|'OFFLINE'|'RETIRED'", callback=validate_status
23
+ None,
24
+ "--status",
25
+ "-s",
26
+ help="'ONLINE'|'OFFLINE'|'UNAVAILABLE'|'RETIRED'",
27
+ callback=validate_status,
24
28
  ),
25
29
  device_type: Optional[str] = typer.Option(
26
30
  None, "--type", "-t", help="'QPU'|'SIMULATOR'", callback=validate_type
@@ -37,51 +41,58 @@ def devices_list( # pylint: disable=too-many-branches
37
41
  ),
38
42
  ) -> None:
39
43
  """List qBraid quantum devices."""
40
- filters = {}
41
- if status:
42
- filters["status"] = status
43
- if device_type:
44
- filters["type"] = "Simulator" if device_type == "SIMULATOR" else device_type
45
- if provider:
46
- filters["provider"] = provider
47
44
 
48
- def import_devices() -> tuple[Any, Callable]:
49
- from qbraid_core.services.quantum import QuantumClient, process_device_data
45
+ def fetch_devices():
46
+ from qbraid_core.services.runtime import QuantumRuntimeClient
50
47
 
51
- client = QuantumClient()
48
+ client = QuantumRuntimeClient()
49
+ return client.list_devices()
52
50
 
53
- return client, process_device_data
51
+ devices = run_progress_task(fetch_devices)
54
52
 
55
- result: tuple[Callable, Callable] = run_progress_task(import_devices)
56
- client, process_device_data = result
57
- raw_data = client.search_devices(filters)
58
- device_data, msg = process_device_data(raw_data)
53
+ # Apply filters (client returns all devices, we filter locally)
54
+ if status:
55
+ devices = [d for d in devices if d.status.value == status]
56
+ if device_type:
57
+ devices = [d for d in devices if d.deviceType == device_type]
58
+ if provider:
59
+ devices = [d for d in devices if d.vendor.lower() == provider.lower()]
59
60
 
60
61
  console = Console()
61
- header_1 = "Provider"
62
+ header_1 = "Vendor"
62
63
  header_2 = "Device Name"
63
- header_3 = "ID"
64
+ header_3 = "QRN"
64
65
  header_4 = "Status"
65
66
  console.print(
66
- f"[bold]{header_1.ljust(12)}{header_2.ljust(35)}{header_3.ljust(41)}{header_4}[/bold]"
67
+ f"[bold]{header_1.ljust(12)}{header_2.ljust(35)}{header_3.ljust(50)}{header_4}[/bold]"
67
68
  )
68
- for device_provider, device_name, device_id, device_status in device_data:
69
+
70
+ for device in devices:
71
+ device_status = device.status.value
69
72
  if device_status == "ONLINE":
70
73
  status_color = "green"
71
74
  elif device_status == "OFFLINE":
72
75
  status_color = "red"
76
+ elif device_status == "UNAVAILABLE":
77
+ status_color = "yellow"
73
78
  else:
74
79
  status_color = "grey"
80
+
81
+ # Truncate long names/qrns for display
82
+ name = device.name[:33] + ".." if len(device.name) > 35 else device.name
83
+ qrn = device.qrn[:48] + ".." if len(device.qrn) > 50 else device.qrn
84
+
75
85
  console.print(
76
- f"{device_provider.ljust(12)}{device_name.ljust(35)}{device_id.ljust(40)}",
86
+ f"{device.vendor.ljust(12)}{name.ljust(35)}{qrn.ljust(50)}",
77
87
  f"[{status_color}]{device_status}[/{status_color}]",
78
88
  )
79
- console.print(f"\n{msg}", style="italic", justify="left")
89
+
90
+ console.print(f"\n[italic]Displaying {len(devices)} devices[/italic]")
80
91
 
81
92
 
82
93
  @devices_app.command(name="get")
83
94
  def devices_get(
84
- device_id: str = typer.Argument(..., help="The ID of the device to get."),
95
+ device_id: str = typer.Argument(..., help="The QRN or ID of the device to get."),
85
96
  fmt: bool = typer.Option(
86
97
  True, "--no-fmt", help="Disable rich console formatting (output raw data)"
87
98
  ),
@@ -89,12 +100,15 @@ def devices_get(
89
100
  """Get a qBraid quantum device."""
90
101
 
91
102
  def get_device():
92
- from qbraid_core.services.quantum import QuantumClient
103
+ from qbraid_core.services.runtime import QuantumRuntimeClient
93
104
 
94
- client = QuantumClient()
105
+ client = QuantumRuntimeClient()
95
106
  return client.get_device(device_id)
96
107
 
97
- data: dict[str, Any] = run_progress_task(get_device)
108
+ device = run_progress_task(get_device)
109
+
110
+ # Convert Pydantic model to dict for display
111
+ data: dict[str, Any] = device.model_dump()
98
112
 
99
113
  print_formatted_data(data, fmt)
100
114
 
@@ -13,7 +13,7 @@ from qbraid_cli.handlers import validate_item
13
13
 
14
14
  def validate_status(value: Optional[str]) -> Union[str, None]:
15
15
  """Validate device status query parameter."""
16
- return validate_item(value, ["ONLINE", "OFFLINE", "RETIRED"], "Status")
16
+ return validate_item(value, ["ONLINE", "OFFLINE", "UNAVAILABLE", "RETIRED"], "Status")
17
17
 
18
18
 
19
19
  def validate_type(value: Optional[str]) -> Union[str, None]:
@@ -23,4 +23,8 @@ def validate_type(value: Optional[str]) -> Union[str, None]:
23
23
 
24
24
  def validate_provider(value: Optional[str]) -> Union[str, None]:
25
25
  """Validate device provider query parameter."""
26
- return validate_item(value, ["AWS", "IBM", "IonQ", "Rigetti", "OQC", "QuEra"], "Provider")
26
+ return validate_item(
27
+ value,
28
+ ["aws", "azure", "ibm", "ionq", "qbraid"],
29
+ "Provider",
30
+ )