latch 2.76.2__tar.gz → 2.76.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.
Files changed (200) hide show
  1. {latch-2.76.2 → latch-2.76.4}/PKG-INFO +1 -1
  2. {latch-2.76.2 → latch-2.76.4}/pyproject.toml +1 -1
  3. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/main.py +9 -2
  4. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/workspace.py +28 -6
  5. {latch-2.76.2 → latch-2.76.4}/.gitignore +0 -0
  6. {latch-2.76.2 → latch-2.76.4}/LICENSE +0 -0
  7. {latch-2.76.2 → latch-2.76.4}/README.md +0 -0
  8. {latch-2.76.2 → latch-2.76.4}/src/latch/__init__.py +0 -0
  9. {latch-2.76.2 → latch-2.76.4}/src/latch/account.py +0 -0
  10. {latch-2.76.2 → latch-2.76.4}/src/latch/executions.py +0 -0
  11. {latch-2.76.2 → latch-2.76.4}/src/latch/functions/__init__.py +0 -0
  12. {latch-2.76.2 → latch-2.76.4}/src/latch/functions/messages.py +0 -0
  13. {latch-2.76.2 → latch-2.76.4}/src/latch/functions/operators.py +0 -0
  14. {latch-2.76.2 → latch-2.76.4}/src/latch/functions/secrets.py +0 -0
  15. {latch-2.76.2 → latch-2.76.4}/src/latch/idl/admin/common.py +0 -0
  16. {latch-2.76.2 → latch-2.76.4}/src/latch/idl/admin/launch_plan.py +0 -0
  17. {latch-2.76.2 → latch-2.76.4}/src/latch/idl/admin/schedule.py +0 -0
  18. {latch-2.76.2 → latch-2.76.4}/src/latch/idl/admin/workflow.py +0 -0
  19. {latch-2.76.2 → latch-2.76.4}/src/latch/idl/core/condition.py +0 -0
  20. {latch-2.76.2 → latch-2.76.4}/src/latch/idl/core/execution.py +0 -0
  21. {latch-2.76.2 → latch-2.76.4}/src/latch/idl/core/identifier.py +0 -0
  22. {latch-2.76.2 → latch-2.76.4}/src/latch/idl/core/interface.py +0 -0
  23. {latch-2.76.2 → latch-2.76.4}/src/latch/idl/core/literals.py +0 -0
  24. {latch-2.76.2 → latch-2.76.4}/src/latch/idl/core/security.py +0 -0
  25. {latch-2.76.2 → latch-2.76.4}/src/latch/idl/core/tasks.py +0 -0
  26. {latch-2.76.2 → latch-2.76.4}/src/latch/idl/core/types.py +0 -0
  27. {latch-2.76.2 → latch-2.76.4}/src/latch/idl/core/workflow.py +0 -0
  28. {latch-2.76.2 → latch-2.76.4}/src/latch/idl/utils.py +0 -0
  29. {latch-2.76.2 → latch-2.76.4}/src/latch/ldata/__init__.py +0 -0
  30. {latch-2.76.2 → latch-2.76.4}/src/latch/ldata/_transfer/__init__.py +0 -0
  31. {latch-2.76.2 → latch-2.76.4}/src/latch/ldata/_transfer/download.py +0 -0
  32. {latch-2.76.2 → latch-2.76.4}/src/latch/ldata/_transfer/manager.py +0 -0
  33. {latch-2.76.2 → latch-2.76.4}/src/latch/ldata/_transfer/node.py +0 -0
  34. {latch-2.76.2 → latch-2.76.4}/src/latch/ldata/_transfer/progress.py +0 -0
  35. {latch-2.76.2 → latch-2.76.4}/src/latch/ldata/_transfer/remote_copy.py +0 -0
  36. {latch-2.76.2 → latch-2.76.4}/src/latch/ldata/_transfer/throttle.py +0 -0
  37. {latch-2.76.2 → latch-2.76.4}/src/latch/ldata/_transfer/upload.py +0 -0
  38. {latch-2.76.2 → latch-2.76.4}/src/latch/ldata/_transfer/utils.py +0 -0
  39. {latch-2.76.2 → latch-2.76.4}/src/latch/ldata/path.py +0 -0
  40. {latch-2.76.2 → latch-2.76.4}/src/latch/ldata/type.py +0 -0
  41. {latch-2.76.2 → latch-2.76.4}/src/latch/py.typed +0 -0
  42. {latch-2.76.2 → latch-2.76.4}/src/latch/registry/__init__.py +0 -0
  43. {latch-2.76.2 → latch-2.76.4}/src/latch/registry/project.py +0 -0
  44. {latch-2.76.2 → latch-2.76.4}/src/latch/registry/record.py +0 -0
  45. {latch-2.76.2 → latch-2.76.4}/src/latch/registry/table.py +0 -0
  46. {latch-2.76.2 → latch-2.76.4}/src/latch/registry/types.py +0 -0
  47. {latch-2.76.2 → latch-2.76.4}/src/latch/registry/upstream_types/__init__.py +0 -0
  48. {latch-2.76.2 → latch-2.76.4}/src/latch/registry/upstream_types/types.py +0 -0
  49. {latch-2.76.2 → latch-2.76.4}/src/latch/registry/upstream_types/values.py +0 -0
  50. {latch-2.76.2 → latch-2.76.4}/src/latch/registry/utils.py +0 -0
  51. {latch-2.76.2 → latch-2.76.4}/src/latch/resources/__init__.py +0 -0
  52. {latch-2.76.2 → latch-2.76.4}/src/latch/resources/conditional.py +0 -0
  53. {latch-2.76.2 → latch-2.76.4}/src/latch/resources/dynamic.py +0 -0
  54. {latch-2.76.2 → latch-2.76.4}/src/latch/resources/launch_plan.py +0 -0
  55. {latch-2.76.2 → latch-2.76.4}/src/latch/resources/map_tasks.py +0 -0
  56. {latch-2.76.2 → latch-2.76.4}/src/latch/resources/reference_workflow.py +0 -0
  57. {latch-2.76.2 → latch-2.76.4}/src/latch/resources/tasks.py +0 -0
  58. {latch-2.76.2 → latch-2.76.4}/src/latch/resources/workflow.py +0 -0
  59. {latch-2.76.2 → latch-2.76.4}/src/latch/types/__init__.py +0 -0
  60. {latch-2.76.2 → latch-2.76.4}/src/latch/types/directory.py +0 -0
  61. {latch-2.76.2 → latch-2.76.4}/src/latch/types/file.py +0 -0
  62. {latch-2.76.2 → latch-2.76.4}/src/latch/types/glob.py +0 -0
  63. {latch-2.76.2 → latch-2.76.4}/src/latch/types/json.py +0 -0
  64. {latch-2.76.2 → latch-2.76.4}/src/latch/types/metadata.py +0 -0
  65. {latch-2.76.2 → latch-2.76.4}/src/latch/types/plots.py +0 -0
  66. {latch-2.76.2 → latch-2.76.4}/src/latch/types/samplesheet_item.py +0 -0
  67. {latch-2.76.2 → latch-2.76.4}/src/latch/types/utils.py +0 -0
  68. {latch-2.76.2 → latch-2.76.4}/src/latch/utils.py +0 -0
  69. {latch-2.76.2 → latch-2.76.4}/src/latch/verified/__init__.py +0 -0
  70. {latch-2.76.2 → latch-2.76.4}/src/latch/verified/deseq2.py +0 -0
  71. {latch-2.76.2 → latch-2.76.4}/src/latch/verified/mafft.py +0 -0
  72. {latch-2.76.2 → latch-2.76.4}/src/latch/verified/pathway.py +0 -0
  73. {latch-2.76.2 → latch-2.76.4}/src/latch/verified/rnaseq.py +0 -0
  74. {latch-2.76.2 → latch-2.76.4}/src/latch/verified/trim_galore.py +0 -0
  75. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/__init__.py +0 -0
  76. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/auth/__init__.py +0 -0
  77. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/auth/csrf.py +0 -0
  78. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/auth/oauth2.py +0 -0
  79. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/auth/pkce.py +0 -0
  80. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/auth/utils.py +0 -0
  81. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/centromere/__init__.py +0 -0
  82. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/centromere/ast_parsing.py +0 -0
  83. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/centromere/ctx.py +0 -0
  84. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/centromere/utils.py +0 -0
  85. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/click_utils.py +0 -0
  86. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/constants.py +0 -0
  87. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/docker_utils/__init__.py +0 -0
  88. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/exceptions/__init__.py +0 -0
  89. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/exceptions/cache.py +0 -0
  90. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/exceptions/errors.py +0 -0
  91. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/exceptions/handler.py +0 -0
  92. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/exceptions/traceback.py +0 -0
  93. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/menus.py +0 -0
  94. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/nextflow/__init__.py +0 -0
  95. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/nextflow/config.py +0 -0
  96. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/nextflow/forch_register.py +0 -0
  97. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/nextflow/parse_schema.py +0 -0
  98. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/nextflow/utils.py +0 -0
  99. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/nextflow/workflow.py +0 -0
  100. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/py.typed +0 -0
  101. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/__init__.py +0 -0
  102. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/cp/__init__.py +0 -0
  103. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/cp/autocomplete.py +0 -0
  104. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/cp/glob.py +0 -0
  105. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/cp/main.py +0 -0
  106. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/cp/utils.py +0 -0
  107. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/docker/__init__.py +0 -0
  108. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/docker/utils.py +0 -0
  109. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/get.py +0 -0
  110. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/get_executions.py +0 -0
  111. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/get_params.py +0 -0
  112. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/gql/pod_ssh.graphql +0 -0
  113. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/gql/pods_list.graphql +0 -0
  114. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/init/__init__.py +0 -0
  115. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/init/assemble_and_sort/.env +0 -0
  116. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/init/assemble_and_sort/LICENSE +0 -0
  117. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/init/assemble_and_sort/README.md +0 -0
  118. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/init/assemble_and_sort/__init__.py +0 -0
  119. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/init/assemble_and_sort/assemble.py +0 -0
  120. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/init/assemble_and_sort/sort.py +0 -0
  121. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/init/assemble_and_sort/system-requirements.txt +0 -0
  122. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/init/common/.dockerignore +0 -0
  123. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/init/example_conda/__init__.py +0 -0
  124. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/init/example_conda/conda_task.py +0 -0
  125. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/init/example_conda/environment.yaml +0 -0
  126. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/init/example_docker/__init__.py +0 -0
  127. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/init/example_docker/task.py +0 -0
  128. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/init/example_nfcore/Dockerfile +0 -0
  129. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/init/example_nfcore/__init__.py +0 -0
  130. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/init/example_nfcore/task.py +0 -0
  131. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/init/example_r/__init__.py +0 -0
  132. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/init/example_r/environment.R +0 -0
  133. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/init/example_r/r_task.py +0 -0
  134. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/init/example_snakemake/.latch/latch_entrypoint +0 -0
  135. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/init/example_snakemake/Dockerfile +0 -0
  136. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/init/example_snakemake/Snakefile +0 -0
  137. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/init/example_snakemake/config.yaml +0 -0
  138. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/init/example_snakemake/environment.yaml +0 -0
  139. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/init/example_snakemake/latch_metadata.py +0 -0
  140. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/init/example_snakemake/scripts/plot-quals.py +0 -0
  141. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/init/example_snakemake/version +0 -0
  142. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/init/init.py +0 -0
  143. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/init/template/LICENSE +0 -0
  144. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/init/template/README.md +0 -0
  145. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/init/template/__init__.py +0 -0
  146. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/init/template/task.py +0 -0
  147. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/k8s/__init__.py +0 -0
  148. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/k8s/attach.py +0 -0
  149. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/k8s/develop.py +0 -0
  150. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/k8s/execute.py +0 -0
  151. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/k8s/utils.py +0 -0
  152. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/k8s/ws_utils.py +0 -0
  153. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/launch/__init__.py +0 -0
  154. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/launch/interface.py +0 -0
  155. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/launch/launch.py +0 -0
  156. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/launch/launch_v2.py +0 -0
  157. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/launch/type_converter.py +0 -0
  158. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/local_dev_old.py +0 -0
  159. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/login.py +0 -0
  160. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/ls.py +0 -0
  161. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/mkdir.py +0 -0
  162. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/move.py +0 -0
  163. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/pods.py +0 -0
  164. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/preview.py +0 -0
  165. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/private_images.py +0 -0
  166. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/register/__init__.py +0 -0
  167. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/register/constants.py +0 -0
  168. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/register/register.py +0 -0
  169. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/register/staging.py +0 -0
  170. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/register/utils.py +0 -0
  171. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/rm.py +0 -0
  172. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/stop_pod.py +0 -0
  173. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/sync.py +0 -0
  174. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/test_data/__init__.py +0 -0
  175. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/test_data/ls.py +0 -0
  176. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/test_data/remove.py +0 -0
  177. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/test_data/upload.py +0 -0
  178. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/services/test_data/utils.py +0 -0
  179. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/snakemake/__init__.py +0 -0
  180. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/snakemake/config/__init__.py +0 -0
  181. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/snakemake/config/parser.py +0 -0
  182. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/snakemake/config/utils.py +0 -0
  183. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/snakemake/serialize.py +0 -0
  184. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/snakemake/serialize_utils.py +0 -0
  185. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/snakemake/single_task_snakemake.py +0 -0
  186. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/snakemake/utils.py +0 -0
  187. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/snakemake/workflow.py +0 -0
  188. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/tinyrequests.py +0 -0
  189. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/tui/__init__.py +0 -0
  190. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/utils/__init__.py +0 -0
  191. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/utils/path.py +0 -0
  192. {latch-2.76.2 → latch-2.76.4}/src/latch_cli/workflow_config.py +0 -0
  193. {latch-2.76.2 → latch-2.76.4}/src/latch_sdk_config/__init__.py +0 -0
  194. {latch-2.76.2 → latch-2.76.4}/src/latch_sdk_config/latch.py +0 -0
  195. {latch-2.76.2 → latch-2.76.4}/src/latch_sdk_config/py.typed +0 -0
  196. {latch-2.76.2 → latch-2.76.4}/src/latch_sdk_config/user.py +0 -0
  197. {latch-2.76.2 → latch-2.76.4}/src/latch_sdk_gql/__init__.py +0 -0
  198. {latch-2.76.2 → latch-2.76.4}/src/latch_sdk_gql/execute.py +0 -0
  199. {latch-2.76.2 → latch-2.76.4}/src/latch_sdk_gql/py.typed +0 -0
  200. {latch-2.76.2 → latch-2.76.4}/src/latch_sdk_gql/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: latch
3
- Version: 2.76.2
3
+ Version: 2.76.4
4
4
  Summary: The Latch SDK
5
5
  Project-URL: Homepage, https://latch.bio
6
6
  Project-URL: Documentation, https://latch.wiki
@@ -12,7 +12,7 @@ include = ["src/**/*.py", "src/**/*.graphql", "src/**/py.typed", "src/latch_cli/
12
12
 
13
13
  [project]
14
14
  name = "latch"
15
- version = "2.76.2"
15
+ version = "2.76.4"
16
16
  description = "The Latch SDK"
17
17
  authors = [{ name = "Kenny Workman", email = "kenny@latch.bio" }]
18
18
  maintainers = [{ name = "Kenny Workman", email = "kenny@latch.bio" }]
@@ -150,8 +150,15 @@ def login(connection: Optional[str]):
150
150
 
151
151
 
152
152
  @latch.command("workspace")
153
+ @click.option(
154
+ "--id",
155
+ "workspace_id",
156
+ type=str,
157
+ default=None,
158
+ help="Workspace ID to switch to without opening the interactive selector.",
159
+ )
153
160
  @requires_login
154
- def workspace():
161
+ def workspace(workspace_id: Optional[str]):
155
162
  """Spawns an interactive terminal prompt allowing users to choose what workspace they want to work in."""
156
163
 
157
164
  crash_handler.message = "Unable to fetch workspaces"
@@ -159,7 +166,7 @@ def workspace():
159
166
 
160
167
  from latch_cli.services.workspace import workspace
161
168
 
162
- workspace()
169
+ workspace(workspace_id)
163
170
 
164
171
 
165
172
  """
@@ -1,7 +1,6 @@
1
- from typing import List, TypedDict
1
+ from typing import Optional
2
2
 
3
3
  import click
4
- from latch_sdk_config.user import user_config
5
4
 
6
5
  from latch.utils import (
7
6
  NoWorkspaceSelectedError,
@@ -10,11 +9,11 @@ from latch.utils import (
10
9
  get_workspaces,
11
10
  )
12
11
  from latch_cli.menus import SelectOption, select_tui
12
+ from latch_sdk_config.user import user_config
13
13
 
14
14
 
15
- def workspace():
16
- """Opens a terminal user interface in which a user can select the workspace
17
- the want to switch to.
15
+ def workspace(workspace_id: Optional[str] = None):
16
+ """Opens a terminal user interface in which a user can select the workspace they want to switch to.
18
17
 
19
18
  Like `get_executions`, this function should only be called from the CLI.
20
19
  """
@@ -26,9 +25,32 @@ def workspace():
26
25
  except NoWorkspaceSelectedError:
27
26
  old_id = None
28
27
 
28
+ if workspace_id is not None:
29
+ selected_option = data.get(workspace_id)
30
+ if selected_option is None:
31
+ click.secho(
32
+ f"Workspace {workspace_id} does not exist or you do not have permission to access it.",
33
+ fg="red",
34
+ bold=True,
35
+ )
36
+ raise click.exceptions.Exit(1)
37
+
38
+ user_config.update_workspace(
39
+ selected_option["workspace_id"], selected_option["name"]
40
+ )
41
+
42
+ if old_id != selected_option["workspace_id"]:
43
+ click.secho(
44
+ f"Successfully switched to context {selected_option['name']}",
45
+ fg="green",
46
+ )
47
+ else:
48
+ click.secho(f"Already in context {selected_option['name']}.", fg="green")
49
+ return
50
+
29
51
  selected_marker = "\x1b[3m\x1b[2m (currently selected) \x1b[22m\x1b[23m"
30
52
 
31
- options: List[SelectOption[WSInfo]] = []
53
+ options: list[SelectOption[WSInfo]] = []
32
54
  for _, info in sorted(
33
55
  data.items(), key=lambda x: "" if x[1]["default"] else x[1]["name"]
34
56
  ):
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes