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.
Files changed (121) hide show
  1. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/PKG-INFO +1 -1
  2. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/pyproject.toml +1 -1
  3. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/_version.py +2 -2
  4. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/admin/headers.py +1 -1
  5. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/configure/actions.py +3 -1
  6. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli.egg-info/PKG-INFO +1 -1
  7. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/admin/test_headers.py +6 -2
  8. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/configure/test_configure_validate_input.py +13 -2
  9. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/.env.example +0 -0
  10. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  11. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  12. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  13. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/.github/dependabot.yml +0 -0
  14. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/.github/workflows/bump-version.yml +0 -0
  15. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/.github/workflows/ci-pr-target.yml +0 -0
  16. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/.github/workflows/docs-pr.yml +0 -0
  17. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/.github/workflows/docs.yml +0 -0
  18. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/.github/workflows/format.yml +0 -0
  19. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/.github/workflows/main.yml +0 -0
  20. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/.github/workflows/pre-release.yml +0 -0
  21. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/.github/workflows/publish.yml +0 -0
  22. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/.github/workflows/tag-on-merge.yml +0 -0
  23. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/.gitignore +0 -0
  24. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/.readthedocs.yml +0 -0
  25. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/CONTRIBUTING.md +0 -0
  26. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/LICENSE +0 -0
  27. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/MANIFEST.IN +0 -0
  28. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/Makefile +0 -0
  29. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/README.md +0 -0
  30. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/docs/Makefile +0 -0
  31. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/docs/_static/favicon.ico +0 -0
  32. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/docs/_static/logo.png +0 -0
  33. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/docs/_static/style/custom.css +0 -0
  34. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/docs/_static/style/s4defs-roles.css +0 -0
  35. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/docs/conf.py +0 -0
  36. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/docs/index.rst +0 -0
  37. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/docs/make.bat +0 -0
  38. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/docs/requirements.txt +0 -0
  39. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/__init__.py +0 -0
  40. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/account/__init__.py +0 -0
  41. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/account/app.py +0 -0
  42. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/admin/__init__.py +0 -0
  43. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/admin/app.py +0 -0
  44. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/admin/validation.py +0 -0
  45. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/chat/__init__.py +0 -0
  46. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/chat/app.py +0 -0
  47. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/configure/__init__.py +0 -0
  48. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/configure/app.py +0 -0
  49. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/devices/__init__.py +0 -0
  50. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/devices/app.py +0 -0
  51. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/devices/validation.py +0 -0
  52. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/envs/__init__.py +0 -0
  53. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/envs/activate.py +0 -0
  54. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/envs/app.py +0 -0
  55. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/envs/create.py +0 -0
  56. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/envs/data_handling.py +0 -0
  57. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/exceptions.py +0 -0
  58. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/files/__init__.py +0 -0
  59. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/files/app.py +0 -0
  60. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/handlers.py +0 -0
  61. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/jobs/__init__.py +0 -0
  62. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/jobs/app.py +0 -0
  63. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/jobs/toggle_braket.py +0 -0
  64. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/jobs/validation.py +0 -0
  65. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/kernels/__init__.py +0 -0
  66. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/kernels/app.py +0 -0
  67. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/main.py +0 -0
  68. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/pip/__init__.py +0 -0
  69. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/pip/app.py +0 -0
  70. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/pip/hooks.py +0 -0
  71. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli/py.typed +0 -0
  72. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli.egg-info/SOURCES.txt +0 -0
  73. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli.egg-info/dependency_links.txt +0 -0
  74. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli.egg-info/entry_points.txt +0 -0
  75. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli.egg-info/requires.txt +0 -0
  76. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/qbraid_cli.egg-info/top_level.txt +0 -0
  77. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/setup.cfg +0 -0
  78. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/__init__.py +0 -0
  79. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/account/__init__.py +0 -0
  80. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/account/test_account_credits.py +0 -0
  81. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/configure/__init__.py +0 -0
  82. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/configure/test_configure_commands.py +0 -0
  83. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/configure/test_configure_prompt_for_config.py +0 -0
  84. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/configure/test_configure_set.py +0 -0
  85. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/conftest.py +0 -0
  86. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/devices/__init__.py +0 -0
  87. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/devices/test_devices_list.py +0 -0
  88. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/devices/test_devices_validations.py +0 -0
  89. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/envs/__init__.py +0 -0
  90. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/envs/test_envs_activate.py +0 -0
  91. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/envs/test_envs_activate_find_shell_rc.py +0 -0
  92. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/envs/test_envs_activate_print_command.py +0 -0
  93. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/envs/test_envs_activate_pyenv.py +0 -0
  94. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/envs/test_envs_create_from_yaml.py +0 -0
  95. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/envs/test_envs_list.py +0 -0
  96. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/envs/test_envs_remove.py +0 -0
  97. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/files/__init__.py +0 -0
  98. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/files/test_files_commands.py +0 -0
  99. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/jobs/__init__.py +0 -0
  100. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/jobs/test_jobs_disable.py +0 -0
  101. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/jobs/test_jobs_enable.py +0 -0
  102. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/jobs/test_jobs_list.py +0 -0
  103. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/jobs/test_jobs_state.py +0 -0
  104. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/jobs/test_jobs_toggle_braket_confirm.py +0 -0
  105. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/jobs/test_jobs_toggle_braket_disable.py +0 -0
  106. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/jobs/test_jobs_toggle_braket_enable.py +0 -0
  107. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/jobs/test_jobs_toggle_braket_get_data.py +0 -0
  108. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/jobs/test_jobs_validate_get_state.py +0 -0
  109. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/jobs/test_jobs_validate_handle_state.py +0 -0
  110. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/jobs/test_jobs_validate_library.py +0 -0
  111. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/kernels/__init__.py +0 -0
  112. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/kernels/test_kernels_list.py +0 -0
  113. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/resources/envs/correct.yaml +0 -0
  114. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/resources/envs/icon.png +0 -0
  115. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tests/resources/envs/incorrect.yaml +0 -0
  116. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tools/bump_version.py +0 -0
  117. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tools/create_dev_build.sh +0 -0
  118. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tools/install_wheel_extras.sh +0 -0
  119. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tools/split_md.py +0 -0
  120. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tools/split_rst.py +0 -0
  121. {qbraid_cli-0.9.8 → qbraid_cli-0.9.9}/tools/stamp_pre_release.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: qbraid-cli
3
- Version: 0.9.8
3
+ Version: 0.9.9
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
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "qbraid-cli"
7
- version = "0.9.8"
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+gb2f10d3'
16
- __version_tuple__ = version_tuple = (0, 1, 'dev1', 'gb2f10d3')
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 (re.match(r"^[a-zA-Z0-9]{11}$", value) or re.match(r"^[a-zA-Z0-9]{30}$", value)):
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
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: qbraid-cli
3
- Version: 0.9.8
3
+ Version: 0.9.9
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
@@ -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) + "\n" + "print('hello world')"
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