cloudos-cli 2.88.0__tar.gz → 2.88.2__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 (78) hide show
  1. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/PKG-INFO +2 -2
  2. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/README.md +1 -1
  3. cloudos_cli-2.88.2/cloudos_cli/_version.py +1 -0
  4. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli/interactive_session/cli.py +4 -2
  5. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli/interactive_session/interactive_session.py +6 -1
  6. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli/jobs/job.py +11 -3
  7. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli.egg-info/PKG-INFO +2 -2
  8. cloudos_cli-2.88.0/cloudos_cli/_version.py +0 -1
  9. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/LICENSE +0 -0
  10. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli/__init__.py +0 -0
  11. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli/__main__.py +0 -0
  12. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli/bash/__init__.py +0 -0
  13. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli/bash/cli.py +0 -0
  14. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli/clos.py +0 -0
  15. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli/configure/__init__.py +0 -0
  16. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli/configure/cli.py +0 -0
  17. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli/configure/configure.py +0 -0
  18. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli/constants.py +0 -0
  19. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli/cost/__init__.py +0 -0
  20. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli/cost/cost.py +0 -0
  21. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli/cromwell/__init__.py +0 -0
  22. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli/cromwell/cli.py +0 -0
  23. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli/datasets/__init__.py +0 -0
  24. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli/datasets/cli.py +0 -0
  25. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli/datasets/datasets.py +0 -0
  26. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli/import_wf/__init__.py +0 -0
  27. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli/import_wf/import_wf.py +0 -0
  28. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli/interactive_session/__init__.py +0 -0
  29. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli/jobs/__init__.py +0 -0
  30. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli/jobs/cli.py +0 -0
  31. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli/link/__init__.py +0 -0
  32. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli/link/cli.py +0 -0
  33. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli/link/link.py +0 -0
  34. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli/logging/__init__.py +0 -0
  35. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli/logging/logger.py +0 -0
  36. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli/procurement/__init__.py +0 -0
  37. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli/procurement/cli.py +0 -0
  38. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli/procurement/images.py +0 -0
  39. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli/projects/__init__.py +0 -0
  40. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli/projects/cli.py +0 -0
  41. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli/queue/__init__.py +0 -0
  42. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli/queue/cli.py +0 -0
  43. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli/queue/queue.py +0 -0
  44. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli/related_analyses/__init__.py +0 -0
  45. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli/related_analyses/related_analyses.py +0 -0
  46. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli/utils/__init__.py +0 -0
  47. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli/utils/array_job.py +0 -0
  48. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli/utils/cli_helpers.py +0 -0
  49. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli/utils/cloud.py +0 -0
  50. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli/utils/details.py +0 -0
  51. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli/utils/errors.py +0 -0
  52. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli/utils/last_wf.py +0 -0
  53. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli/utils/nextflow_version.py +0 -0
  54. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli/utils/requests.py +0 -0
  55. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli/utils/resources.py +0 -0
  56. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli/workflows/__init__.py +0 -0
  57. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli/workflows/cli.py +0 -0
  58. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli.egg-info/SOURCES.txt +0 -0
  59. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli.egg-info/dependency_links.txt +0 -0
  60. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli.egg-info/entry_points.txt +0 -0
  61. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli.egg-info/requires.txt +0 -0
  62. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/cloudos_cli.egg-info/top_level.txt +0 -0
  63. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/setup.cfg +0 -0
  64. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/setup.py +0 -0
  65. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/tests/__init__.py +0 -0
  66. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/tests/functions_for_pytest.py +0 -0
  67. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/tests/test_cli_project_create.py +0 -0
  68. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/tests/test_cost/__init__.py +0 -0
  69. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/tests/test_cost/test_job_cost.py +0 -0
  70. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/tests/test_error_messages.py +0 -0
  71. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/tests/test_interactive_session/__init__.py +0 -0
  72. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/tests/test_interactive_session/test_create_session.py +0 -0
  73. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/tests/test_interactive_session/test_list_sessions.py +0 -0
  74. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/tests/test_logging/__init__.py +0 -0
  75. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/tests/test_logging/test_logger.py +0 -0
  76. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/tests/test_nextflow_version.py +0 -0
  77. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/tests/test_related_analyses/__init__.py +0 -0
  78. {cloudos_cli-2.88.0 → cloudos_cli-2.88.2}/tests/test_related_analyses/test_related_analyses.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cloudos_cli
3
- Version: 2.88.0
3
+ Version: 2.88.2
4
4
  Summary: Python package for interacting with CloudOS
5
5
  Home-page: https://github.com/lifebit-ai/cloudos-cli
6
6
  Author: David Piñeyro
@@ -2178,7 +2178,7 @@ cloudos interactive-session create \
2178
2178
  - `--spot`: Use spot instances (AWS only, cost-saving)
2179
2179
  - `--shared`: Make session accessible to workspace members
2180
2180
  - `--cost-limit`: Compute cost limit in USD (default: -1 for unlimited)
2181
- - `--shutdown-in`: Auto-shutdown duration (e.g., `8h`, `2d`, `30m`)
2181
+ - `--shutdown-in`: Auto-shutdown duration (e.g., `8h`, `2d`, `30m`, default: `12h`)
2182
2182
 
2183
2183
  **Data & Storage Management:**
2184
2184
  - `--mount`: Mount a data file into the session. Supports both CloudOS datasets and S3 files (AWS only). Format: `project_name/dataset_path` (e.g., `leila-test/Data/file.csv`) or `s3://bucket/path/to/file` (e.g., `s3://my-bucket/data/file.csv`). Can be used multiple times.
@@ -2143,7 +2143,7 @@ cloudos interactive-session create \
2143
2143
  - `--spot`: Use spot instances (AWS only, cost-saving)
2144
2144
  - `--shared`: Make session accessible to workspace members
2145
2145
  - `--cost-limit`: Compute cost limit in USD (default: -1 for unlimited)
2146
- - `--shutdown-in`: Auto-shutdown duration (e.g., `8h`, `2d`, `30m`)
2146
+ - `--shutdown-in`: Auto-shutdown duration (e.g., `8h`, `2d`, `30m`, default: `12h`)
2147
2147
 
2148
2148
  **Data & Storage Management:**
2149
2149
  - `--mount`: Mount a data file into the session. Supports both CloudOS datasets and S3 files (AWS only). Format: `project_name/dataset_path` (e.g., `leila-test/Data/file.csv`) or `s3://bucket/path/to/file` (e.g., `s3://my-bucket/data/file.csv`). Can be used multiple times.
@@ -0,0 +1 @@
1
+ __version__ = '2.88.2'
@@ -276,7 +276,8 @@ def list_sessions(ctx,
276
276
  help='Cost limit in USD. Default=-1 (unlimited).',
277
277
  default=-1)
278
278
  @click.option('--shutdown-in',
279
- help='Auto-shutdown duration (e.g., 8h, 2d).')
279
+ help='Auto-shutdown duration (e.g., 8h, 2d). Default=12h.',
280
+ default='12h')
280
281
  @click.option('--mount',
281
282
  multiple=True,
282
283
  help='Mount a data file into the session. Supports both CloudOS datasets and S3 files. Format: project_name/dataset_path (e.g., leila-test/Data/file.csv) or s3://bucket/path/to/file (e.g., s3://my-bucket/data/file.csv). Can be used multiple times.')
@@ -561,7 +562,8 @@ def create_session(ctx,
561
562
  spark_core=spark_core,
562
563
  spark_workers=spark_workers,
563
564
  data_files=parsed_data_files,
564
- s3_mounts=parsed_s3_mounts
565
+ s3_mounts=parsed_s3_mounts,
566
+ shutdown_in=shutdown_in
565
567
  )
566
568
  # Output session link in greppable format for CI/automation
567
569
  click.echo(f"Session link: {cloudos_url}/app/data-science/interactive-analysis/view/{session_id}")
@@ -1162,7 +1162,7 @@ def build_resume_payload(
1162
1162
  def format_session_creation_table(session_data, instance_type=None, storage_size=None,
1163
1163
  backend_type=None, r_version=None,
1164
1164
  spark_master=None, spark_core=None, spark_workers=None,
1165
- data_files=None, s3_mounts=None):
1165
+ data_files=None, s3_mounts=None, shutdown_in=None):
1166
1166
  """Display session creation result in table format.
1167
1167
 
1168
1168
  Parameters
@@ -1187,6 +1187,8 @@ def format_session_creation_table(session_data, instance_type=None, storage_size
1187
1187
  List of parsed data file objects to display
1188
1188
  s3_mounts : list, optional
1189
1189
  List of parsed S3 mount objects to display
1190
+ shutdown_in : str, optional
1191
+ Shutdown duration value (e.g., '12h', '2d') that was requested
1190
1192
 
1191
1193
  Returns
1192
1194
  -------
@@ -1214,6 +1216,9 @@ def format_session_creation_table(session_data, instance_type=None, storage_size
1214
1216
  session_data.get('interactiveSessionConfiguration', {}).get('storageSizeInGb')
1215
1217
  storage_display = f"{response_storage} GB" if response_storage else (f"{storage_size} GB" if storage_size else "N/A")
1216
1218
  table.add_row("Storage", storage_display)
1219
+ # Display shutdown duration
1220
+ if shutdown_in:
1221
+ table.add_row("Auto-Shutdown", shutdown_in)
1217
1222
  # Add backend-specific information
1218
1223
  if backend_type == 'rstudio' and r_version:
1219
1224
  table.add_row("R Version", r_version)
@@ -1353,12 +1353,19 @@ class Job(Cloudos):
1353
1353
  param['columnIndex'] = int(param['columnIndex'])
1354
1354
  except ValueError:
1355
1355
  raise ValueError(f"Invalid columnIndex value '{param['columnIndex']}' for parameter '{param.get('name')}'")
1356
+ # The textValue, as the name indicates, needs to be a string
1357
+ for param in cloned_payload.get('parameters', []):
1358
+ if param.get('parameterKind') == 'textValue':
1359
+ try:
1360
+ param['textValue'] = str(param['textValue'])
1361
+ except ValueError:
1362
+ raise ValueError(f"Invalid textValue value '{param['textValue']}' for parameter '{param.get('name')}'")
1356
1363
 
1357
1364
  if parameters:
1358
1365
  cloned_parameters = cloned_payload.get('parameters', [])
1359
1366
  for param_override in parameters:
1360
1367
  param_name, param_value = param_override.split('=', 1)
1361
- param_name = param_name.lstrip('-') # Remove leading dashes
1368
+ param_name = param_name.lstrip('-') # Remove leading dashes
1362
1369
  if not self.update_parameter_value(cloned_parameters, param_name, param_value):
1363
1370
  # Parameter not found, add as new parameter
1364
1371
  # Determine workflow type to set proper prefix and format
@@ -1401,10 +1408,11 @@ class Job(Cloudos):
1401
1408
  def fix_boolean_strings(self, obj):
1402
1409
  """
1403
1410
  Recursively convert string booleans ('True', 'False') into real booleans
1404
- inside dicts, lists, or nested structures.
1411
+ inside dicts, lists, or nested structures. It excludes 'textValues' as they
1412
+ have to remain as text even if the text is 'true'.
1405
1413
  """
1406
1414
  if isinstance(obj, dict):
1407
- return {k: self.fix_boolean_strings(v) for k, v in obj.items()}
1415
+ return {k: self.fix_boolean_strings(v) if k != 'textValue' else v for k, v in obj.items()}
1408
1416
  elif isinstance(obj, list):
1409
1417
  return [self.fix_boolean_strings(v) for v in obj]
1410
1418
  elif isinstance(obj, str):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cloudos_cli
3
- Version: 2.88.0
3
+ Version: 2.88.2
4
4
  Summary: Python package for interacting with CloudOS
5
5
  Home-page: https://github.com/lifebit-ai/cloudos-cli
6
6
  Author: David Piñeyro
@@ -2178,7 +2178,7 @@ cloudos interactive-session create \
2178
2178
  - `--spot`: Use spot instances (AWS only, cost-saving)
2179
2179
  - `--shared`: Make session accessible to workspace members
2180
2180
  - `--cost-limit`: Compute cost limit in USD (default: -1 for unlimited)
2181
- - `--shutdown-in`: Auto-shutdown duration (e.g., `8h`, `2d`, `30m`)
2181
+ - `--shutdown-in`: Auto-shutdown duration (e.g., `8h`, `2d`, `30m`, default: `12h`)
2182
2182
 
2183
2183
  **Data & Storage Management:**
2184
2184
  - `--mount`: Mount a data file into the session. Supports both CloudOS datasets and S3 files (AWS only). Format: `project_name/dataset_path` (e.g., `leila-test/Data/file.csv`) or `s3://bucket/path/to/file` (e.g., `s3://my-bucket/data/file.csv`). Can be used multiple times.
@@ -1 +0,0 @@
1
- __version__ = '2.88.0'
File without changes
File without changes
File without changes