more-compute 0.3.0__py3-none-any.whl → 0.3.2__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.
- frontend/app/globals.css +1 -0
- frontend/components/cell/MonacoCell.tsx +31 -31
- frontend/components/popups/FilterPopup.tsx +24 -24
- frontend/components/popups/PackagesPopup.tsx +19 -8
- kernel_run.py +26 -13
- {more_compute-0.3.0.dist-info → more_compute-0.3.2.dist-info}/METADATA +1 -1
- {more_compute-0.3.0.dist-info → more_compute-0.3.2.dist-info}/RECORD +13 -13
- morecompute/__version__.py +1 -1
- morecompute/execution/worker.py +8 -1
- {more_compute-0.3.0.dist-info → more_compute-0.3.2.dist-info}/WHEEL +0 -0
- {more_compute-0.3.0.dist-info → more_compute-0.3.2.dist-info}/entry_points.txt +0 -0
- {more_compute-0.3.0.dist-info → more_compute-0.3.2.dist-info}/licenses/LICENSE +0 -0
- {more_compute-0.3.0.dist-info → more_compute-0.3.2.dist-info}/top_level.txt +0 -0
frontend/app/globals.css
CHANGED
|
@@ -580,9 +580,9 @@ export const MonacoCell: React.FC<CellProps> = ({
|
|
|
580
580
|
data-cell-index={index}
|
|
581
581
|
>
|
|
582
582
|
{/* Hover Controls */}
|
|
583
|
-
|
|
584
|
-
<div className="cell-
|
|
585
|
-
|
|
583
|
+
<div className="cell-hover-controls">
|
|
584
|
+
<div className="cell-actions-right">
|
|
585
|
+
{!isMarkdownWithContent && (
|
|
586
586
|
<CellButton
|
|
587
587
|
icon={<PlayIcon className="w-6 h-6" />}
|
|
588
588
|
onClick={(e) => {
|
|
@@ -592,35 +592,35 @@ export const MonacoCell: React.FC<CellProps> = ({
|
|
|
592
592
|
title={isExecuting ? "Stop execution" : "Run cell"}
|
|
593
593
|
isLoading={isExecuting}
|
|
594
594
|
/>
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
595
|
+
)}
|
|
596
|
+
<CellButton
|
|
597
|
+
icon={<ChevronUpIcon className="w-6 h-6" />}
|
|
598
|
+
onClick={(e) => {
|
|
599
|
+
e.stopPropagation();
|
|
600
|
+
onMoveUp(indexRef.current);
|
|
601
|
+
}}
|
|
602
|
+
title="Move cell up"
|
|
603
|
+
disabled={index === 0}
|
|
604
|
+
/>
|
|
605
|
+
<CellButton
|
|
606
|
+
icon={<ChevronDownIcon className="w-6 h-6" />}
|
|
607
|
+
onClick={(e) => {
|
|
608
|
+
e.stopPropagation();
|
|
609
|
+
onMoveDown(indexRef.current);
|
|
610
|
+
}}
|
|
611
|
+
title="Move cell down"
|
|
612
|
+
disabled={index === totalCells - 1}
|
|
613
|
+
/>
|
|
614
|
+
<CellButton
|
|
615
|
+
icon={<LinkBreak2Icon className="w-5 h-5" />}
|
|
616
|
+
onClick={(e) => {
|
|
617
|
+
e.stopPropagation();
|
|
618
|
+
onDelete(indexRef.current);
|
|
619
|
+
}}
|
|
620
|
+
title="Delete cell"
|
|
621
|
+
/>
|
|
622
622
|
</div>
|
|
623
|
-
|
|
623
|
+
</div>
|
|
624
624
|
|
|
625
625
|
{/* Cell Content */}
|
|
626
626
|
<div
|
|
@@ -84,8 +84,8 @@ const FilterPopup: React.FC<FilterPopupProps> = ({
|
|
|
84
84
|
top: "50%",
|
|
85
85
|
left: "50%",
|
|
86
86
|
transform: "translate(-50%, -50%)",
|
|
87
|
-
backgroundColor: "
|
|
88
|
-
border: "1px solid
|
|
87
|
+
backgroundColor: "var(--mc-cell-background)",
|
|
88
|
+
border: "1px solid var(--mc-border)",
|
|
89
89
|
borderRadius: "8px",
|
|
90
90
|
padding: "16px",
|
|
91
91
|
width: "320px",
|
|
@@ -110,7 +110,7 @@ const FilterPopup: React.FC<FilterPopupProps> = ({
|
|
|
110
110
|
fontSize: "14px",
|
|
111
111
|
fontWeight: 600,
|
|
112
112
|
margin: 0,
|
|
113
|
-
color: "
|
|
113
|
+
color: "var(--mc-text-color)",
|
|
114
114
|
}}
|
|
115
115
|
>
|
|
116
116
|
Filter
|
|
@@ -119,7 +119,7 @@ const FilterPopup: React.FC<FilterPopupProps> = ({
|
|
|
119
119
|
onClick={handleClearAll}
|
|
120
120
|
style={{
|
|
121
121
|
fontSize: "11px",
|
|
122
|
-
color: "
|
|
122
|
+
color: "var(--mc-primary)",
|
|
123
123
|
background: "none",
|
|
124
124
|
border: "none",
|
|
125
125
|
cursor: "pointer",
|
|
@@ -142,9 +142,9 @@ const FilterPopup: React.FC<FilterPopupProps> = ({
|
|
|
142
142
|
width: "100%",
|
|
143
143
|
padding: "8px 10px",
|
|
144
144
|
borderRadius: "6px",
|
|
145
|
-
border: "1px solid
|
|
146
|
-
backgroundColor: "
|
|
147
|
-
color: "
|
|
145
|
+
border: "1px solid var(--mc-border)",
|
|
146
|
+
backgroundColor: "var(--mc-input-background)",
|
|
147
|
+
color: "var(--mc-text-color)",
|
|
148
148
|
fontSize: "12px",
|
|
149
149
|
marginBottom: "12px",
|
|
150
150
|
cursor: "pointer",
|
|
@@ -166,9 +166,9 @@ const FilterPopup: React.FC<FilterPopupProps> = ({
|
|
|
166
166
|
width: "100%",
|
|
167
167
|
padding: "8px 10px",
|
|
168
168
|
borderRadius: "6px",
|
|
169
|
-
border: "1px solid
|
|
170
|
-
backgroundColor: "
|
|
171
|
-
color: "
|
|
169
|
+
border: "1px solid var(--mc-border)",
|
|
170
|
+
backgroundColor: "var(--mc-input-background)",
|
|
171
|
+
color: "var(--mc-text-color)",
|
|
172
172
|
fontSize: "12px",
|
|
173
173
|
marginBottom: "12px",
|
|
174
174
|
boxSizing: "border-box",
|
|
@@ -182,7 +182,7 @@ const FilterPopup: React.FC<FilterPopupProps> = ({
|
|
|
182
182
|
overflowY: "auto",
|
|
183
183
|
marginBottom: "16px",
|
|
184
184
|
maxHeight: "240px",
|
|
185
|
-
border: "1px solid
|
|
185
|
+
border: "1px solid var(--mc-border)",
|
|
186
186
|
borderRadius: "6px",
|
|
187
187
|
padding: "4px",
|
|
188
188
|
}}
|
|
@@ -200,12 +200,12 @@ const FilterPopup: React.FC<FilterPopupProps> = ({
|
|
|
200
200
|
padding: "8px 6px",
|
|
201
201
|
cursor: "pointer",
|
|
202
202
|
fontSize: "12px",
|
|
203
|
-
color: "
|
|
203
|
+
color: "var(--mc-text-color)",
|
|
204
204
|
borderRadius: "4px",
|
|
205
205
|
transition: "background-color 0.15s",
|
|
206
206
|
}}
|
|
207
207
|
onMouseEnter={(e) =>
|
|
208
|
-
(e.currentTarget.style.backgroundColor = "
|
|
208
|
+
(e.currentTarget.style.backgroundColor = "var(--mc-secondary)")
|
|
209
209
|
}
|
|
210
210
|
onMouseLeave={(e) =>
|
|
211
211
|
(e.currentTarget.style.backgroundColor = "transparent")
|
|
@@ -249,12 +249,12 @@ const FilterPopup: React.FC<FilterPopupProps> = ({
|
|
|
249
249
|
padding: "8px 6px",
|
|
250
250
|
cursor: "pointer",
|
|
251
251
|
fontSize: "12px",
|
|
252
|
-
color: "
|
|
252
|
+
color: "var(--mc-text-color)",
|
|
253
253
|
borderRadius: "4px",
|
|
254
254
|
transition: "background-color 0.15s",
|
|
255
255
|
}}
|
|
256
256
|
onMouseEnter={(e) =>
|
|
257
|
-
(e.currentTarget.style.backgroundColor = "
|
|
257
|
+
(e.currentTarget.style.backgroundColor = "var(--mc-secondary)")
|
|
258
258
|
}
|
|
259
259
|
onMouseLeave={(e) =>
|
|
260
260
|
(e.currentTarget.style.backgroundColor = "transparent")
|
|
@@ -303,12 +303,12 @@ const FilterPopup: React.FC<FilterPopupProps> = ({
|
|
|
303
303
|
padding: "8px 6px",
|
|
304
304
|
cursor: "pointer",
|
|
305
305
|
fontSize: "12px",
|
|
306
|
-
color: "
|
|
306
|
+
color: "var(--mc-text-color)",
|
|
307
307
|
borderRadius: "4px",
|
|
308
308
|
transition: "background-color 0.15s",
|
|
309
309
|
}}
|
|
310
310
|
onMouseEnter={(e) =>
|
|
311
|
-
(e.currentTarget.style.backgroundColor = "
|
|
311
|
+
(e.currentTarget.style.backgroundColor = "var(--mc-secondary)")
|
|
312
312
|
}
|
|
313
313
|
onMouseLeave={(e) =>
|
|
314
314
|
(e.currentTarget.style.backgroundColor = "transparent")
|
|
@@ -352,12 +352,12 @@ const FilterPopup: React.FC<FilterPopupProps> = ({
|
|
|
352
352
|
padding: "8px 6px",
|
|
353
353
|
cursor: "pointer",
|
|
354
354
|
fontSize: "12px",
|
|
355
|
-
color: "
|
|
355
|
+
color: "var(--mc-text-color)",
|
|
356
356
|
borderRadius: "4px",
|
|
357
357
|
transition: "background-color 0.15s",
|
|
358
358
|
}}
|
|
359
359
|
onMouseEnter={(e) =>
|
|
360
|
-
(e.currentTarget.style.backgroundColor = "
|
|
360
|
+
(e.currentTarget.style.backgroundColor = "var(--mc-secondary)")
|
|
361
361
|
}
|
|
362
362
|
onMouseLeave={(e) =>
|
|
363
363
|
(e.currentTarget.style.backgroundColor = "transparent")
|
|
@@ -390,9 +390,9 @@ const FilterPopup: React.FC<FilterPopupProps> = ({
|
|
|
390
390
|
padding: "8px 16px",
|
|
391
391
|
fontSize: "12px",
|
|
392
392
|
borderRadius: "6px",
|
|
393
|
-
border: "1px solid
|
|
394
|
-
backgroundColor: "
|
|
395
|
-
color: "
|
|
393
|
+
border: "1px solid var(--mc-border)",
|
|
394
|
+
backgroundColor: "var(--mc-secondary)",
|
|
395
|
+
color: "var(--mc-text-color)",
|
|
396
396
|
cursor: "pointer",
|
|
397
397
|
fontWeight: 500,
|
|
398
398
|
}}
|
|
@@ -410,8 +410,8 @@ const FilterPopup: React.FC<FilterPopupProps> = ({
|
|
|
410
410
|
fontSize: "12px",
|
|
411
411
|
borderRadius: "6px",
|
|
412
412
|
border: "none",
|
|
413
|
-
backgroundColor: "
|
|
414
|
-
color: "
|
|
413
|
+
backgroundColor: "var(--mc-primary)",
|
|
414
|
+
color: "var(--mc-button-foreground)",
|
|
415
415
|
cursor: "pointer",
|
|
416
416
|
fontWeight: 500,
|
|
417
417
|
}}
|
|
@@ -70,9 +70,6 @@ const PackagesPopup: React.FC<PackagesPopupProps> = ({ onClose }) => {
|
|
|
70
70
|
return packages.filter(p => p.name.toLowerCase().includes(q));
|
|
71
71
|
}, [packages, query]);
|
|
72
72
|
|
|
73
|
-
if (loading) return <div className="packages-list">Loading...</div>;
|
|
74
|
-
if (error) return <div className="packages-list">{error}</div>;
|
|
75
|
-
|
|
76
73
|
return (
|
|
77
74
|
<div className="packages-container">
|
|
78
75
|
<div className="packages-toolbar">
|
|
@@ -98,12 +95,26 @@ const PackagesPopup: React.FC<PackagesPopupProps> = ({ onClose }) => {
|
|
|
98
95
|
<div className="col-version">Version</div>
|
|
99
96
|
</div>
|
|
100
97
|
<div className="packages-list">
|
|
101
|
-
{
|
|
102
|
-
<div
|
|
103
|
-
|
|
104
|
-
|
|
98
|
+
{loading ? (
|
|
99
|
+
<div style={{ padding: '20px', textAlign: 'center', color: 'var(--mc-text-color)' }}>
|
|
100
|
+
Loading packages...
|
|
101
|
+
</div>
|
|
102
|
+
) : error ? (
|
|
103
|
+
<div style={{ padding: '20px', textAlign: 'center', color: '#dc2626' }}>
|
|
104
|
+
{error}
|
|
105
|
+
</div>
|
|
106
|
+
) : filtered.length === 0 ? (
|
|
107
|
+
<div style={{ padding: '20px', textAlign: 'center', color: 'var(--mc-text-color)', opacity: 0.6 }}>
|
|
108
|
+
{query ? 'No packages found' : 'No packages installed'}
|
|
105
109
|
</div>
|
|
106
|
-
)
|
|
110
|
+
) : (
|
|
111
|
+
filtered.map((pkg) => (
|
|
112
|
+
<div key={`${pkg.name}@${pkg.version}`} className="package-row">
|
|
113
|
+
<div className="col-name package-name">{pkg.name}</div>
|
|
114
|
+
<div className="col-version package-version">{pkg.version}</div>
|
|
115
|
+
</div>
|
|
116
|
+
))
|
|
117
|
+
)}
|
|
107
118
|
</div>
|
|
108
119
|
</div>
|
|
109
120
|
</div>
|
kernel_run.py
CHANGED
|
@@ -24,6 +24,7 @@ class NotebookLauncher:
|
|
|
24
24
|
self.debug = debug
|
|
25
25
|
self.notebook_path = notebook_path
|
|
26
26
|
self.is_windows = platform.system() == "Windows"
|
|
27
|
+
self.cleaning_up = False # Flag to prevent multiple cleanup calls
|
|
27
28
|
root_dir = notebook_path.parent if notebook_path.parent != Path('') else Path.cwd()
|
|
28
29
|
os.environ["MORECOMPUTE_ROOT"] = str(root_dir.resolve())
|
|
29
30
|
os.environ["MORECOMPUTE_NOTEBOOK_PATH"] = str(self.notebook_path)
|
|
@@ -262,8 +263,14 @@ class NotebookLauncher:
|
|
|
262
263
|
self.cleanup()
|
|
263
264
|
sys.exit(1)
|
|
264
265
|
|
|
265
|
-
def cleanup(self):
|
|
266
|
+
def cleanup(self, force=False):
|
|
266
267
|
"""Clean up processes on exit"""
|
|
268
|
+
if self.cleaning_up:
|
|
269
|
+
return # Already cleaning up, don't run again
|
|
270
|
+
self.cleaning_up = True
|
|
271
|
+
|
|
272
|
+
timeout = 0.5 if force else 2 # Shorter timeout on force exit
|
|
273
|
+
|
|
267
274
|
if self.frontend_process:
|
|
268
275
|
try:
|
|
269
276
|
if self.is_windows:
|
|
@@ -274,11 +281,14 @@ class NotebookLauncher:
|
|
|
274
281
|
stderr=subprocess.DEVNULL
|
|
275
282
|
)
|
|
276
283
|
else:
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
284
|
+
if force:
|
|
285
|
+
self.frontend_process.kill() # Force kill immediately
|
|
286
|
+
else:
|
|
287
|
+
self.frontend_process.terminate()
|
|
288
|
+
try:
|
|
289
|
+
self.frontend_process.wait(timeout=timeout)
|
|
290
|
+
except subprocess.TimeoutExpired:
|
|
291
|
+
self.frontend_process.kill()
|
|
282
292
|
except Exception:
|
|
283
293
|
pass
|
|
284
294
|
|
|
@@ -292,11 +302,14 @@ class NotebookLauncher:
|
|
|
292
302
|
stderr=subprocess.DEVNULL
|
|
293
303
|
)
|
|
294
304
|
else:
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
305
|
+
if force:
|
|
306
|
+
self.backend_process.kill() # Force kill immediately
|
|
307
|
+
else:
|
|
308
|
+
self.backend_process.terminate()
|
|
309
|
+
try:
|
|
310
|
+
self.backend_process.wait(timeout=timeout)
|
|
311
|
+
except subprocess.TimeoutExpired:
|
|
312
|
+
self.backend_process.kill()
|
|
300
313
|
except Exception:
|
|
301
314
|
pass
|
|
302
315
|
|
|
@@ -316,8 +329,8 @@ class NotebookLauncher:
|
|
|
316
329
|
print("[CTRL-C AGAIN TO EXIT]")
|
|
317
330
|
else:
|
|
318
331
|
print("\n Thanks for using MoreCompute!\n")
|
|
319
|
-
self.cleanup()
|
|
320
|
-
|
|
332
|
+
self.cleanup(force=True) # Force immediate cleanup
|
|
333
|
+
os._exit(0) # Hard exit without raising SystemExit
|
|
321
334
|
|
|
322
335
|
# Windows signal handling is different
|
|
323
336
|
if not self.is_windows:
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
kernel_run.py,sha256=
|
|
1
|
+
kernel_run.py,sha256=sQchzBOWgynXOKkSMp8T8BAkljw5CqDFrHX2Y0U6yto,16526
|
|
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
|
|
@@ -14,13 +14,13 @@ frontend/styling_README.md,sha256=jvoXKUzJv0rEIU40gz23Z6Xugy4To8P0N9szg_hKrqw,56
|
|
|
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
|
|
17
|
-
frontend/app/globals.css,sha256=
|
|
17
|
+
frontend/app/globals.css,sha256=0k9WgoXRHIQjsI5kVSSkKLfYJs04FYOhOY8JvQrSulg,33823
|
|
18
18
|
frontend/app/layout.tsx,sha256=VMkhvePu0hV0w-huEmTocTr7lZ6DF_7eidrhzCCMwzc,7604
|
|
19
19
|
frontend/app/page.tsx,sha256=p-DgDv8xDnwcRfDJY4rtfSQ2VdYwbnP3G-otWqDR1l0,256
|
|
20
20
|
frontend/components/Notebook.tsx,sha256=JImlThoX4F363yShOqdYDjIIO3i1uqfCLRkDlzurinQ,21851
|
|
21
21
|
frontend/components/cell/AddCellButton.tsx,sha256=ZC2Vck0JIRDxGYhYv3LPYAdKDo13U6008WG_-XoPlIM,1012
|
|
22
22
|
frontend/components/cell/CellButton.tsx,sha256=j3lRStluVtRXjZOhi9isS3XKsRmM0WTn5SaFDM6GuYg,1386
|
|
23
|
-
frontend/components/cell/MonacoCell.tsx,sha256=
|
|
23
|
+
frontend/components/cell/MonacoCell.tsx,sha256=EqsajBZuQpoOWlNVG7OmmoIyY4pUfW5obiBwpniuQbw,23862
|
|
24
24
|
frontend/components/layout/ConnectionBanner.tsx,sha256=-m77wKCFpeRJ_AQwnM38jLwCY5vfpqE846xeXmT3p8A,870
|
|
25
25
|
frontend/components/layout/Sidebar.tsx,sha256=kxgO2mXX11xI6rX478cUqqQ3xB40jlby21y27GTJSLU,1551
|
|
26
26
|
frontend/components/modals/ConfirmModal.tsx,sha256=3WgXy_wmR8FHZPwzMevfZHFXa0blR4v_SbKG3d5McT4,3652
|
|
@@ -30,10 +30,10 @@ frontend/components/output/CellOutput.tsx,sha256=KLRzwEchvBoeoai8TbabKEwO4tHmog3
|
|
|
30
30
|
frontend/components/output/ErrorDisplay.tsx,sha256=kYfip5zikcFIuN7WW47RVjoqwDujC1q_yMbgHrHl0E0,4996
|
|
31
31
|
frontend/components/output/MarkdownRenderer.tsx,sha256=RtZ5yNRxDXIh_NkNsNiy30wMGIW7V1gfhsjecgMdc80,3341
|
|
32
32
|
frontend/components/popups/ComputePopup.tsx,sha256=B7AwwjpJ9_nNI5qSN53jdR2tAulB5yl7spjMXjH4yDM,44021
|
|
33
|
-
frontend/components/popups/FilterPopup.tsx,sha256=
|
|
33
|
+
frontend/components/popups/FilterPopup.tsx,sha256=KRIzRvVxEF47ELWIAvrqv7BZQYmEo_zOX8Nbpz0zEik,14133
|
|
34
34
|
frontend/components/popups/FolderPopup.tsx,sha256=V2tDAbztvNIUyPWtFiwjeIoCmFGQyDosQgST_JsAzLo,5215
|
|
35
35
|
frontend/components/popups/MetricsPopup.tsx,sha256=ublYbOQ-pSU_w48F10uFjDYctysEwmri9lrji5YHIC4,6034
|
|
36
|
-
frontend/components/popups/PackagesPopup.tsx,sha256=
|
|
36
|
+
frontend/components/popups/PackagesPopup.tsx,sha256=2DnwNVN8kwC3ff1UN_7cl6qLwAFE9F9H8hYwl7M3jTM,4141
|
|
37
37
|
frontend/components/popups/SettingsPopup.tsx,sha256=rGwYxjkADnyTtpP0MjVpFPBsGoT1eENN2z7nWjLuzFE,2773
|
|
38
38
|
frontend/contexts/PodWebSocketContext.tsx,sha256=QyEg1Msyum7h3T6F3j6pn4Ds5sXFT_9WYu5_0YZ2IUI,8256
|
|
39
39
|
frontend/lib/api.ts,sha256=L6Js3K7RcPCLfVVUz-bKX5hLAVFKCfUSHAKSHk2keAk,11026
|
|
@@ -64,9 +64,9 @@ frontend/public/fonts/Fira.ttf,sha256=dbSM4W7Drd9n_EkfXq8P31KuxbjZ1wtuFiZ8aFebvT
|
|
|
64
64
|
frontend/public/fonts/Tiempos.woff2,sha256=h83bJKvAK301wXCMIvK7ZG5j0H2K3tzAfgo0yk4z8OE,13604
|
|
65
65
|
frontend/public/fonts/VeraMono.ttf,sha256=2kKB3H2xej385kpiztkodcWJU0AFXsi6JKORTrl7NJ0,49224
|
|
66
66
|
frontend/types/notebook.ts,sha256=v23RaZe6H3lU5tq6sqnJDPxC2mu0NZFDCJfiN0mgvSs,1359
|
|
67
|
-
more_compute-0.3.
|
|
67
|
+
more_compute-0.3.2.dist-info/licenses/LICENSE,sha256=0Ot-XIetYt06iay6IhtpJkruD-cLZtjyv7_aIEE-oSc,1073
|
|
68
68
|
morecompute/__init__.py,sha256=pcMVq8Q7qb42AOn7tqgoZJOi3epDDBnEriiv2WVKnXY,87
|
|
69
|
-
morecompute/__version__.py,sha256=
|
|
69
|
+
morecompute/__version__.py,sha256=vNiWJ14r_cw5t_7UDqDQIVZvladKFGyHH2avsLpN7Vg,22
|
|
70
70
|
morecompute/cli.py,sha256=kVvzvPBqF8xO6UuhU_-TBn99nKwJ405R2mAS6zU0KBc,734
|
|
71
71
|
morecompute/notebook.py,sha256=KEcv0eOEh9N7bPVGoRuKJb47G9MmpQ5zz1B6Dm58w18,4651
|
|
72
72
|
morecompute/process_worker.py,sha256=KsE3r-XpkYGuyO4w3t54VKkD51LfNHAZc3TYattMtrg,7185
|
|
@@ -74,7 +74,7 @@ morecompute/server.py,sha256=mdN80iBUixq4KUQfu53aoVsNZ6DM9RaBXc-lwt4bxFk,40285
|
|
|
74
74
|
morecompute/execution/__init__.py,sha256=jPmBmq8BZWbUEY9XFSpqt5FkgX04uNS10WnUlr7Rnms,134
|
|
75
75
|
morecompute/execution/__main__.py,sha256=pAWB_1bn99u8Gb-tVMSMI-NYvbYbDiwbn40L0a0djeA,202
|
|
76
76
|
morecompute/execution/executor.py,sha256=BesGdx10HSGj8PyPrekdQZzc0tXoqidznEaFITOq8JM,20554
|
|
77
|
-
morecompute/execution/worker.py,sha256
|
|
77
|
+
morecompute/execution/worker.py,sha256=-_-KD89LVA1DmGa1fTqKekttTOGX_JMtUdO02-SV5DE,16388
|
|
78
78
|
morecompute/models/__init__.py,sha256=VLJ5GWi2uTNiZBdvl-ipSbmA6EL8FZHZ5oq-rJmm9z0,640
|
|
79
79
|
morecompute/models/api_models.py,sha256=-ydvi9SeTfdoY9oVPNQS4by-kQGSknx6BHhGD8E2tpo,4553
|
|
80
80
|
morecompute/services/data_manager.py,sha256=c4GKucetMM-VPNbHyzce6bZRvFfmz8kTd5RppLjoLVc,14329
|
|
@@ -95,8 +95,8 @@ morecompute/utils/shell_utils.py,sha256=fGFLhQLZU-lmMGALbbS-fKPkhQtmMhZ1FkgQ3Teo
|
|
|
95
95
|
morecompute/utils/special_commands.py,sha256=IyF9MTINMNNo3P_f56Q6yS_P2HNjA9vohYVxEV7KYnc,17331
|
|
96
96
|
morecompute/utils/system_environment_util.py,sha256=32mQRubo0i4X61o-825T7m-eUSidcEp07qkInP1sWZA,4774
|
|
97
97
|
morecompute/utils/zmq_util.py,sha256=tx7-iS04UN69OFtBzkxcEnRhT7xtI9EzRnrZ_nsH_O0,1889
|
|
98
|
-
more_compute-0.3.
|
|
99
|
-
more_compute-0.3.
|
|
100
|
-
more_compute-0.3.
|
|
101
|
-
more_compute-0.3.
|
|
102
|
-
more_compute-0.3.
|
|
98
|
+
more_compute-0.3.2.dist-info/METADATA,sha256=qO93-kelqgnC3wWl2NzLe_JyMfOnGtBJ3wPY5WqadrI,3631
|
|
99
|
+
more_compute-0.3.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
100
|
+
more_compute-0.3.2.dist-info/entry_points.txt,sha256=xp7z9eRPNRM4oxkZZVlyXkhkSjN1AjoYI_B7qpDJ1bI,49
|
|
101
|
+
more_compute-0.3.2.dist-info/top_level.txt,sha256=Tamm6ADzjwaQa1z27O7Izcyhyt9f0gVjMv1_tC810aI,32
|
|
102
|
+
more_compute-0.3.2.dist-info/RECORD,,
|
morecompute/__version__.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = "0.3.
|
|
1
|
+
__version__ = "0.3.2"
|
morecompute/execution/worker.py
CHANGED
|
@@ -332,7 +332,14 @@ def worker_main():
|
|
|
332
332
|
if lines:
|
|
333
333
|
last = lines[-1].strip()
|
|
334
334
|
# Skip comments and empty lines
|
|
335
|
-
if last
|
|
335
|
+
if not last or last.startswith('#'):
|
|
336
|
+
last = None
|
|
337
|
+
# Skip orphaned closing brackets from multi-line expressions
|
|
338
|
+
# e.g., the ')' from: model = func(\n arg1,\n arg2\n)
|
|
339
|
+
elif last.lstrip().startswith(')') or last.lstrip().startswith('}') or last.lstrip().startswith(']'):
|
|
340
|
+
last = None
|
|
341
|
+
|
|
342
|
+
if last:
|
|
336
343
|
# Check if it looks like a statement (assignment, import, etc)
|
|
337
344
|
is_statement = False
|
|
338
345
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|