more-compute 0.2.4__py3-none-any.whl → 0.2.6__py3-none-any.whl

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.
@@ -46,6 +46,9 @@ const SettingsPopup: React.FC<{ onSettingsChange?: (settings: NotebookSettings)
46
46
 
47
47
  return (
48
48
  <div className="settings-container">
49
+ <div style={{ fontSize: '12px', marginBottom: '8px', color: 'var(--mc-text-secondary, #6b7280)' }}>
50
+ See all themes at <a href="https://github.com/DannyMang/more-compute/blob/main/frontend/styling_README.md" target="_blank" rel="noopener noreferrer" style={{ color: 'var(--mc-link-color, #3b82f6)', textDecoration: 'underline' }}>styling_README.md</a>
51
+ </div>
49
52
  <textarea
50
53
  className="settings-editor"
51
54
  value={settingsJson}
@@ -1,18 +1,10 @@
1
- (for settings.json)
1
+ # For settings.json
2
2
 
3
- Possible Themes:
3
+ Available themes: `light`, `dark`, `tokyo-night`, `tokyo-night-storm`, `tokyo-night-light`, `night-owl`, `night-owl-light`, `synthwave-84`, `one-dark-pro`
4
4
 
5
- light
6
- dark
7
- tokyo-night
8
- tokyo-night-storm
9
- tokyo-night-light
10
- night-owl
11
- night-owl-light
12
- synthwave-84
13
- one-dark-pro
14
-
15
- Example settings.json:
5
+ Example:
6
+ ```json
16
7
  {
17
8
  "theme": "dark"
18
9
  }
10
+ ```
kernel_run.py CHANGED
@@ -305,13 +305,19 @@ class NotebookLauncher:
305
305
  print("\n Edit notebook in your browser!\n")
306
306
  print(" ➜ URL: http://localhost:3000\n")
307
307
 
308
+ # Track Ctrl+C presses
309
+ interrupt_count = [0] # Use list to allow modification in nested function
310
+
308
311
  # Set up signal handlers
309
312
  def signal_handler(signum, frame):
310
- # Shutdown immediately on Ctrl+C
311
- print("\nREMINDER: Any running GPU pods will continue to incur costs until you terminate them in the Compute popup.")
312
- print("\n Thanks for using MoreCompute!\n")
313
- self.cleanup()
314
- sys.exit(0)
313
+ interrupt_count[0] += 1
314
+ if interrupt_count[0] == 1:
315
+ print("\n\nREMINDER: Any running GPU pods will continue to incur costs until you terminate them in the Compute popup.")
316
+ print("[CTRL-C AGAIN TO EXIT]")
317
+ else:
318
+ print("\n Thanks for using MoreCompute!\n")
319
+ self.cleanup()
320
+ sys.exit(0)
315
321
 
316
322
  # Windows signal handling is different
317
323
  if not self.is_windows:
@@ -341,6 +347,7 @@ class NotebookLauncher:
341
347
  time.sleep(1)
342
348
 
343
349
  except KeyboardInterrupt:
350
+ # This shouldn't be reached due to signal handler, but keep as fallback
344
351
  print("\n\n Thanks for using MoreCompute!\n")
345
352
  self.cleanup()
346
353
 
@@ -371,11 +378,22 @@ def build_parser() -> argparse.ArgumentParser:
371
378
  def ensure_notebook_exists(notebook_path: Path):
372
379
  if notebook_path.exists():
373
380
  if notebook_path.suffix != '.ipynb':
374
- raise ValueError("Notebook path must be a .ipynb file")
381
+ raise ValueError(
382
+ f"Error: '{notebook_path}' is not a notebook file.\n"
383
+ f"Notebook files must have a .ipynb extension.\n"
384
+ f"Example: more-compute {notebook_path}.ipynb"
385
+ )
375
386
  return
376
387
 
377
388
  if notebook_path.suffix != '.ipynb':
378
- raise ValueError("Notebook path must end with .ipynb")
389
+ raise ValueError(
390
+ f"Error: '{notebook_path}' does not have the .ipynb extension.\n"
391
+ f"Notebook files must end with .ipynb\n\n"
392
+ f"Did you mean?\n"
393
+ f" more-compute {notebook_path}.ipynb\n\n"
394
+ f"Or to create a new notebook with timestamp:\n"
395
+ f" more-compute new"
396
+ )
379
397
 
380
398
  notebook_path.parent.mkdir(parents=True, exist_ok=True)
381
399
  notebook = Notebook()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: more-compute
3
- Version: 0.2.4
3
+ Version: 0.2.6
4
4
  Summary: An interactive notebook environment for local and GPU computing
5
5
  Home-page: https://github.com/DannyMang/MORECOMPUTE
6
6
  Author: MoreCompute Team
@@ -44,8 +44,7 @@ Dynamic: requires-python
44
44
  [![Python 3.8+](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/)
45
45
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
46
46
 
47
- Interactive notebook environment for local Python development. Works with standard `.ipynb` files,
48
- similar to Jupyter Lab but more awesome.
47
+ An interactive notebook environment, similar to Marimo and Google Colab, that runs locally. It works with standard `.ipynb` files, similar to Jupyter Lab but more awesome.
49
48
 
50
49
  ## Installation
51
50
 
@@ -1,4 +1,4 @@
1
- kernel_run.py,sha256=-lyN0b77fPIhhX1KoxwMofnY6TyvZ227Pbega7oL4_w,15070
1
+ kernel_run.py,sha256=XAgUmZO9EVPXMlQe8RO8w4s_NveB9U7J6S-CyF12D0o,15847
2
2
  frontend/.DS_Store,sha256=uQeHnkKyuTF1AVax3NPqtN0uCH6XNXAxL9Nkb6Q9cGw,8196
3
3
  frontend/.gitignore,sha256=IH4mX_SQH5rZ-W2M4IUw4E-fxgCBVHKmbQpEYJbWVM0,480
4
4
  frontend/README.md,sha256=YLVf9995r3JZD5UkII5GZCvDK9wXXNrUE0loHA4vlY8,1450
@@ -10,7 +10,7 @@ frontend/next.config.ts,sha256=OL_rEfTIZxsB_B5R9JX2AxYXgC0Fc_XiDoRlOGEDEpk,368
10
10
  frontend/package-lock.json,sha256=pGL_J72WHNTz7iLx2MOwHwnDGfbKzN-r_qnnbzfGbEU,334369
11
11
  frontend/package.json,sha256=nUVMqlXGT5m431ArOzzs_geSfmq0AKfqUB40zIAeZ5s,1395
12
12
  frontend/postcss.config.mjs,sha256=jEBxSXR5tLs0bQ67U7G961Vb62WVEqqg1piNDYPd7tU,105
13
- frontend/styling_README.md,sha256=RAQ4q-axGqugym8L22KpxB2ReBbEtg67YCEHLvTVvAw,196
13
+ frontend/styling_README.md,sha256=H7eCyVMCNk_3tsKvJQHISFSL7ra6M6V58Vfsbt28wBY,220
14
14
  frontend/tailwind.config.ts,sha256=eP9nVaAuyYo46vGQfCyWbo25_pr2hW830fs1Itcix9Q,620
15
15
  frontend/tsconfig.json,sha256=7SvBlRBYmuXAlAteRQTGwEE7ooWuNaPUrZ219dOo61E,598
16
16
  frontend/app/favicon.ico,sha256=K4rS0zRVqPc2_DqOv48L3qiEitTA20iigzvQ-c13WTI,25931
@@ -35,7 +35,7 @@ frontend/components/popups/FilterPopup.tsx,sha256=4kx9txg8cWeC6XHlh0pu0-BAfZkLTD
35
35
  frontend/components/popups/FolderPopup.tsx,sha256=V2tDAbztvNIUyPWtFiwjeIoCmFGQyDosQgST_JsAzLo,5215
36
36
  frontend/components/popups/MetricsPopup.tsx,sha256=V4Srat-RRr7B046Ezg5w99_E_t9j0P3Ch5DO9rF7Nx0,5028
37
37
  frontend/components/popups/PackagesPopup.tsx,sha256=K_9kGlQ-y-njugOLrahbv0KHRh_mXIlzuMg0giRsTb8,3606
38
- frontend/components/popups/SettingsPopup.tsx,sha256=etwDuB4HHfadzN7CZf9omZ0uNl_4vhwJ92C5p3rleuY,2395
38
+ frontend/components/popups/SettingsPopup.tsx,sha256=rGwYxjkADnyTtpP0MjVpFPBsGoT1eENN2z7nWjLuzFE,2773
39
39
  frontend/contexts/PodWebSocketContext.tsx,sha256=QyEg1Msyum7h3T6F3j6pn4Ds5sXFT_9WYu5_0YZ2IUI,8256
40
40
  frontend/lib/api.ts,sha256=0N4PCSC5pfbq7GvR_6aOdPZ3JGujzi1Rz4V51g8sHP8,10852
41
41
  frontend/lib/monaco-themes.ts,sha256=jh_pZAmSMKjY_belbMbZX2WpFBN7baRxvJp9shUDYgk,5396
@@ -65,9 +65,9 @@ frontend/public/fonts/Fira.ttf,sha256=dbSM4W7Drd9n_EkfXq8P31KuxbjZ1wtuFiZ8aFebvT
65
65
  frontend/public/fonts/Tiempos.woff2,sha256=h83bJKvAK301wXCMIvK7ZG5j0H2K3tzAfgo0yk4z8OE,13604
66
66
  frontend/public/fonts/VeraMono.ttf,sha256=2kKB3H2xej385kpiztkodcWJU0AFXsi6JKORTrl7NJ0,49224
67
67
  frontend/types/notebook.ts,sha256=v23RaZe6H3lU5tq6sqnJDPxC2mu0NZFDCJfiN0mgvSs,1359
68
- more_compute-0.2.4.dist-info/licenses/LICENSE,sha256=0Ot-XIetYt06iay6IhtpJkruD-cLZtjyv7_aIEE-oSc,1073
68
+ more_compute-0.2.6.dist-info/licenses/LICENSE,sha256=0Ot-XIetYt06iay6IhtpJkruD-cLZtjyv7_aIEE-oSc,1073
69
69
  morecompute/__init__.py,sha256=pcMVq8Q7qb42AOn7tqgoZJOi3epDDBnEriiv2WVKnXY,87
70
- morecompute/__version__.py,sha256=SBl2EPFW-ltPvQ7vbVWItyAsz3aKYIpjO7vcfr84GkU,22
70
+ morecompute/__version__.py,sha256=Oz5HbwHMyE87nmwV80AZzpkJPf-wBg7eDuJr_BXZkhU,22
71
71
  morecompute/cli.py,sha256=kVvzvPBqF8xO6UuhU_-TBn99nKwJ405R2mAS6zU0KBc,734
72
72
  morecompute/notebook.py,sha256=KEcv0eOEh9N7bPVGoRuKJb47G9MmpQ5zz1B6Dm58w18,4651
73
73
  morecompute/process_worker.py,sha256=KsE3r-XpkYGuyO4w3t54VKkD51LfNHAZc3TYattMtrg,7185
@@ -93,8 +93,8 @@ morecompute/utils/python_environment_util.py,sha256=l8WWWPwKbypknw8GwL22NXCji5i1
93
93
  morecompute/utils/special_commands.py,sha256=JTc9II2EitmivwTTdnydEefShasiTa-7w8tNyYVIenw,19104
94
94
  morecompute/utils/system_environment_util.py,sha256=32mQRubo0i4X61o-825T7m-eUSidcEp07qkInP1sWZA,4774
95
95
  morecompute/utils/zmq_util.py,sha256=tx7-iS04UN69OFtBzkxcEnRhT7xtI9EzRnrZ_nsH_O0,1889
96
- more_compute-0.2.4.dist-info/METADATA,sha256=9apuFd8BacFWNrlul4rCFXSLNthj23Jm9m0qomhueSo,3599
97
- more_compute-0.2.4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
98
- more_compute-0.2.4.dist-info/entry_points.txt,sha256=xp7z9eRPNRM4oxkZZVlyXkhkSjN1AjoYI_B7qpDJ1bI,49
99
- more_compute-0.2.4.dist-info/top_level.txt,sha256=Tamm6ADzjwaQa1z27O7Izcyhyt9f0gVjMv1_tC810aI,32
100
- more_compute-0.2.4.dist-info/RECORD,,
96
+ more_compute-0.2.6.dist-info/METADATA,sha256=WwIvC8bdlk8MTsPcfHiiyoVOShlimReIQuEaPwYep0Q,3631
97
+ more_compute-0.2.6.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
98
+ more_compute-0.2.6.dist-info/entry_points.txt,sha256=xp7z9eRPNRM4oxkZZVlyXkhkSjN1AjoYI_B7qpDJ1bI,49
99
+ more_compute-0.2.6.dist-info/top_level.txt,sha256=Tamm6ADzjwaQa1z27O7Izcyhyt9f0gVjMv1_tC810aI,32
100
+ more_compute-0.2.6.dist-info/RECORD,,
@@ -1 +1 @@
1
- __version__ = "0.2.4"
1
+ __version__ = "0.2.6"