Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Suppresses header check inside frontmatter #14203

Merged
merged 5 commits into from Mar 20, 2023

Conversation

JasonWeill
Copy link
Contributor

References

Fixes #14200.

Code changes

Suppresses Markdown header check inside YAML frontmatter, defined as lines surrounded by --- on a line by itself.

User-facing changes

In the Markdown block below, Summary and Motivation are recognized as headings, and nothing in the frontmatter is.

---
title: Adopting a text-based diagram syntax in Jupyter Markdown
authors: (alphabetically) Nick Bollweg (@bollwyvl)
issue-number: 100
pr-number: 101
date-started: 2021-03-14
---

# Summary

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

# Motivation

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Backwards-incompatible changes

None.

@jupyterlab-probot
Copy link

Thanks for making a pull request to jupyterlab!
To try out this branch on binder, follow this link: Binder

@bollwyvl
Copy link
Contributor


front: matter

^^^ that's some frontmatter

Ha, hadn't even looked at the implementation... figured it actually used the markdown parser or something. That's a lot of heuristics. But this is markdown, which seems to be made entirely of heuristics.

The changed seems reasonable, but I imagine some more cases around the .rst-like/setext style of headers:

---
front: matter
---

Not-front-matter
===

Really-not-front-matter
---

Not even looking
~~~

> ^^^ this is probably an alternate code block

@bollwyvl
Copy link
Contributor

Oh, and the (very whitespace-sensitive) "semantic break" that makes a <hr/>`:


---

@JasonWeill
Copy link
Contributor Author

@bollwyvl Since this is front matter, should we only do the frontmatter check once, on the very first line of the file? That would prevent the horizontal rule --- from triggering this logic.

@fcollonval
Copy link
Member

thanks @JasonWeill

@bollwyvl Since this is front matter, should we only do the frontmatter check once, on the very first line of the file? That would prevent the horizontal rule --- from triggering this logic.

Yes we should only check for the very first line; switch to a logic:

  1. Is there a header
  2. Skip the header
  3. Look for headings after the header

Another reason is that your current implementation will not work with the following case:

Title 1
---

Title 2
---

I'm pretty sure the current logic will escape the second title.


I'm 👍 for reusing the markdown parsing (especially as we are already parsing twice the string, once by CM and once by marked.js). But let's open a follow-up issue as it will require more complex changes.

@bollwyvl
Copy link
Contributor

Yep: I guess we're trying to match upstream GFM: here are some weird cases: https://gist.github.com/bollwyvl/84f19e4bcb3a6d5a8d23a26a5bcaf329

Here are some weird edge cases.

packages/toc/src/utils/markdown.ts Outdated Show resolved Hide resolved
@fcollonval fcollonval added this to the 4.0.0 milestone Mar 17, 2023
Copy link
Member

@fcollonval fcollonval left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @JasonWeill

@JasonWeill JasonWeill merged commit 8230a1a into jupyterlab:master Mar 20, 2023
74 of 76 checks passed
@github-actions
Copy link
Contributor

Benchmark report

The execution time (in milliseconds) are grouped by test file, test type and browser.
For each case, the following values are computed: min <- [1st quartile - median - 3rd quartile] -> max.

The mean relative comparison is computed with 95% confidence.

Results table
Test file large_code_notebook large_md_notebook
open
chromium
actual 586 <- [668 - 687 - 729] -> 820 1262 <- [1388 - 1429 - 1478] -> 1618
expected 591 <- [651 - 681 - 725] -> 1027 709 <- [1385 - 1430 - 1479] -> 1625
Mean relative change ⚠️ 1.1% ± 2.3% 0.9% ± 2.1%
switch-from
chromium
actual 758 <- [794 - 815 - 834] -> 890 331 <- [407 - 433 - 455] -> 519
expected 643 <- [786 - 812 - 839] -> 981 362 <- [415 - 437 - 467] -> 551
Mean relative change ⚠️ 0.4% ± 1.4% -2.2% ± 2.3%
switch-to
chromium
actual 1356 <- [1394 - 1419 - 1440] -> 1623 945 <- [979 - 995 - 1015] -> 1142
expected 1311 <- [1388 - 1405 - 1437] -> 1682 928 <- [975 - 990 - 1010] -> 1070
Mean relative change ⚠️ -0.5% ± 1.3% 0.6% ± 0.9%
close
chromium
actual 155 <- [178 - 184 - 193] -> 219 230 <- [252 - 264 - 278] -> 303
expected 148 <- [172 - 181 - 188] -> 234 230 <- [253 - 262 - 274] -> 297
Mean relative change ⚠️ 2.2% ± 2.2% 0.6% ± 1.8%

Changes are computed with expected as reference.

@jupyterlab/benchmarks@1.0.0 test:mocha
mocha ./tests/

Waiting for localhost:8888
localhost:8888 is up

Cell memory leaks

Create a code cell Memory change: +157 kB Leak detected: Yes

Leaking objects:

Object # added Retained size increase
ArraySearchMarker 1 +5 B
ContentDeleted 1 +16 B
ContentString 1 +69 B
Detached Text 1 +75 B
FocusTracker 1 +276 B
ObservableList 1 +60 B
OutputArea 1 +1.4 kB
OutputAreaModel 1 +115 B
Promise 1 +20 B
PromiseDelegate 1 +128 B
ResizeHandle 1 +47 B
RestorablePool 1 +304 B
UndoManager 1 +1.93 kB
WidgetTracker 1 +980 B
YArray 1 +164 B
YCodeCell 1 +107 B
YText 1 +362 B
Detached DOMStringMap 2 +96 B
Detached V8EventHandlerNonNull 2 +80 B
Set 2 +1.21 kB
YMap 2 +464 B
StackItem 3 +1.32 kB
ContentAny 4 +238 B
ContentType 4 +64 B
DeleteItem 4 +80 B
DeleteSet 6 +988 B
Detached HTMLCollection 6 +572 B
EventHandler 8 +261 B
ID 10 +320 B
Item 10 +1.2 kB
Detached DOMTokenList 13 +876 B
Detached Attr 14 +1.01 kB
Detached HTMLDivElement 14 +46.8 kB
Map 17 +2.57 kB
Signal 19 +319 B
DOMRectReadOnly 32 +1.79 kB
Array 44 +5.32 kB
Detached V8EventListener 263 +23.4 kB
Detached EventListener 265 +42.6 kB
(closure) 270 +28.1 kB
Detached InternalNode 323 +45.2 kB

Leaking collections:

Type Change Preview Size increased at
Array +2 [StackItem, ...]
UndoManager.afterTransactionHandler  http://localhost:8888/static/lab/vendors-node_modules_yjs_dist_yjs_mjs.7c22fc794e51ffbd0e42.js:5064:15
webpack://jupyterlab/node_modules/lib0/observable.js:73:62
Array.forEach <anonymous>
webpack://jupyterlab/node_modules/lib0/observable.js:73:62
Array.<anonymous> http://localhost:8888/static/lab/vendors-node_modules_yjs_dist_yjs_mjs.7c22fc794e51ffbd0e42.js:4720:27
webpack://jupyterlab/node_modules/lib0/function.js:19:0
cleanupTransactions http://localhost:8888/static/lab/vendors-node_modules_yjs_dist_yjs_mjs.7c22fc794e51ffbd0e42.js:4722:62
transact http://localhost:8888/static/lab/vendors-node_modules_yjs_dist_yjs_mjs.7c22fc794e51ffbd0e42.js:4843:9
Doc.transact http://localhost:8888/static/lab/vendors-node_modules_yjs_dist_yjs_mjs.7c22fc794e51ffbd0e42.js:2050:5
Array +10 [Item, ...]
addStruct                    http://localhost:8888/static/lab/vendors-node_modules_yjs_dist_yjs_mjs.7c22fc794e51ffbd0e42.js:4295:11
Item.integrate http://localhost:8888/static/lab/vendors-node_modules_yjs_dist_yjs_mjs.7c22fc794e51ffbd0e42.js:11118:7
<unknown> http://localhost:8888/static/lab/vendors-node_modules_yjs_dist_yjs_mjs.7c22fc794e51ffbd0e42.js:6651:22
Array.forEach <anonymous>
typeListInsertGenericsAfter http://localhost:8888/static/lab/vendors-node_modules_yjs_dist_yjs_mjs.7c22fc794e51ffbd0e42.js:6624:11
typeListInsertGenerics http://localhost:8888/static/lab/vendors-node_modules_yjs_dist_yjs_mjs.7c22fc794e51ffbd0e42.js:6711:10
<unknown> http://localhost:8888/static/lab/vendors-node_modules_yjs_dist_yjs_mjs.7c22fc794e51ffbd0e42.js:7039:9
transact http://localhost:8888/static/lab/vendors-node_modules_yjs_dist_yjs_mjs.7c22fc794e51ffbd0e42.js:4829:14
YArray.insert http://localhost:8888/static/lab/vendors-node_modules_yjs_dist_yjs_mjs.7c22fc794e51ffbd0e42.js:7038:7
Set +1 Set((anonymous function), ...)
                          webpack://jupyterlab/node_modules/lib0/observable.js:30:56                                                                                     
Doc.on http://localhost:8888/static/lab/vendors-node_modules_yjs_dist_yjs_mjs.7c22fc794e51ffbd0e42.js:2209:11
new UndoManager http://localhost:8888/static/lab/vendors-node_modules_yjs_dist_yjs_mjs.7c22fc794e51ffbd0e42.js:5084:14
YCodeCell.setUndoManager http://localhost:8888/static/lab/vendors-node_modules_jupyter_ydoc_lib_index_js-node_modules_process_browser_js.fc8babfba933ff460960.js:398:33
<unknown> http://localhost:8888/static/lab/vendors-node_modules_jupyter_ydoc_lib_index_js-node_modules_process_browser_js.fc8babfba933ff460960.js:1584:15
Array.forEach <anonymous>
YNotebook.insertCells http://localhost:8888/static/lab/vendors-node_modules_jupyter_ydoc_lib_index_js-node_modules_process_browser_js.fc8babfba933ff460960.js:1583:16
YNotebook.insertCell http://localhost:8888/static/lab/vendors-node_modules_jupyter_ydoc_lib_index_js-node_modules_process_browser_js.fc8babfba933ff460960.js:1564:21
webpack://jupyterlab/packages/notebook/src/actions.tsx:404:22
Create a markdown cell Memory change: -135 kB Leak detected: No

Leaking objects:

Object # added Retained size increase
ActivityMonitor 1 +294 B
ArraySearchMarker 1 +5 B
AttachmentsModel 1 +193 B
AttachmentsResolver 1 +14 B
CodeCellModel 1 +359 B
ContentString 1 +66 B
Debouncer 1 +3.46 kB
Detached HTMLAnchorElement 1 +300 B
Detached HTMLButtonElement 1 +5.3 kB
Detached HTMLHeadingElement 1 +960 B
Error 1 +3.06 kB
MarkdownCell 1 +4.73 kB
MarkdownCellModel 1 +237 B
Poll 1 +3.7 kB
RenderMimeRegistry 1 +227 B
RenderedMarkdown 1 +66 B
Transaction 1 +860 B
TypeError 1 +312 B
YArray 1 +164 B
YArrayEvent 1 +357 B
YCodeCell 1 +107 B
YMarkdownCell 1 +45 B
Detached CSSStyleDeclaration 2 +136 B
Detached HTMLElement 2 +304 B
Detached V8EventHandlerNonNull 2 +5.04 kB
Promise 2 +3.06 kB
PromiseDelegate 2 +3.27 kB
UndoManager 2 +2.38 kB
YText 2 +456 B
Detached DOMStringMap 3 +148 B
ObservableMap 3 +381 B
StackItem 3 +1.33 kB
DeleteItem 4 +80 B
YMap 4 +872 B
ContentAny 5 +454 B
DeleteSet 6 +1 kB
ContentType 7 +112 B
Detached Text 7 +476 B
Set 8 +1.76 kB
Detached HTMLDivElement 10 +30.5 kB
Detached DOMTokenList 13 +860 B
ID 13 +416 B
Item 13 +1.71 kB
EventHandler 14 +425 B
Detached HTMLCollection 17 +1.79 kB
Map 27 +12.1 kB
Signal 28 +722 B
Array 74 +29 kB
Detached V8EventListener 130 +10.9 kB
Detached EventListener 132 +25.5 kB
(closure) 152 +-4.03 kB
Detached InternalNode 162 +28.4 kB

Leaking collections:

Type Change Preview Size increased at
Array +1 [{signal, slot, thisArg}, ...]
Object.connect  http://localhost:8888/static/lab/jlab_core.6882a32e5e247c101f12.js:10490:17
Signal.connect http://localhost:8888/static/lab/jlab_core.6882a32e5e247c101f12.js:10230:24
webpack://jupyterlab/packages/cell-toolbar/src/celltoolbartracker.ts:121:37
invokeSlot http://localhost:8888/static/lab/jlab_core.6882a32e5e247c101f12.js:10699:18
Object.emit http://localhost:8888/static/lab/jlab_core.6882a32e5e247c101f12.js:10657:17
Signal.emit http://localhost:8888/static/lab/jlab_core.6882a32e5e247c101f12.js:10256:17
webpack://jupyterlab/packages/notebook/src/widget.ts:1321:30
webpack://jupyterlab/packages/notebook/src/actions.tsx:408:28
webpack://jupyterlab/packages/notebook-extension/src/index.ts:2719:15
Array +1 [624d18de-3b40-45a7-a056-5fd709caca9c, ...]
                                     webpack://jupyterlab/packages/notebook/src/actions.tsx:2503:37            
Array.forEach <anonymous>
webpack://jupyterlab/packages/notebook/src/actions.tsx:2498:21
webpack://jupyterlab/packages/notebook/src/actions.tsx:350:12
webpack://jupyterlab/packages/notebook-extension/src/index.ts:2650:15
CommandRegistry.execute http://localhost:8888/static/lab/jlab_core.6882a32e5e247c101f12.js:5748:33
CommandRegistry._executeKeyBinding http://localhost:8888/static/lab/jlab_core.6882a32e5e247c101f12.js:5906:14
CommandRegistry.processKeydownEvent http://localhost:8888/static/lab/jlab_core.6882a32e5e247c101f12.js:5846:18
JupyterLab.evtKeydown http://localhost:8888/static/lab/jlab_core.6882a32e5e247c101f12.js:4660:23
Array +1 [{signal, slot, thisArg}, ...]
Object.connect  http://localhost:8888/static/lab/jlab_core.6882a32e5e247c101f12.js:10490:17
Signal.connect http://localhost:8888/static/lab/jlab_core.6882a32e5e247c101f12.js:10230:24
webpack://jupyterlab/packages/notebook/src/notebooktools.ts:226:33
invokeSlot http://localhost:8888/static/lab/jlab_core.6882a32e5e247c101f12.js:10699:18
Object.emit http://localhost:8888/static/lab/jlab_core.6882a32e5e247c101f12.js:10657:17
Signal.emit http://localhost:8888/static/lab/jlab_core.6882a32e5e247c101f12.js:10256:17
webpack://jupyterlab/packages/notebook/src/tracker.ts:90:30
invokeSlot http://localhost:8888/static/lab/jlab_core.6882a32e5e247c101f12.js:10699:18
Object.emit http://localhost:8888/static/lab/jlab_core.6882a32e5e247c101f12.js:10657:17
Array +2 [StackItem, ...]
UndoManager.afterTransactionHandler  http://localhost:8888/static/lab/vendors-node_modules_yjs_dist_yjs_mjs.7c22fc794e51ffbd0e42.js:5064:15
webpack://jupyterlab/node_modules/lib0/observable.js:73:62
Array.forEach <anonymous>
webpack://jupyterlab/node_modules/lib0/observable.js:73:62
Array.<anonymous> http://localhost:8888/static/lab/vendors-node_modules_yjs_dist_yjs_mjs.7c22fc794e51ffbd0e42.js:4720:27
webpack://jupyterlab/node_modules/lib0/function.js:19:0
cleanupTransactions http://localhost:8888/static/lab/vendors-node_modules_yjs_dist_yjs_mjs.7c22fc794e51ffbd0e42.js:4722:62
transact http://localhost:8888/static/lab/vendors-node_modules_yjs_dist_yjs_mjs.7c22fc794e51ffbd0e42.js:4843:9
Doc.transact http://localhost:8888/static/lab/vendors-node_modules_yjs_dist_yjs_mjs.7c22fc794e51ffbd0e42.js:2050:5
Array +13 [Item, ...]
addStruct                    http://localhost:8888/static/lab/vendors-node_modules_yjs_dist_yjs_mjs.7c22fc794e51ffbd0e42.js:4295:11
Item.integrate http://localhost:8888/static/lab/vendors-node_modules_yjs_dist_yjs_mjs.7c22fc794e51ffbd0e42.js:11118:7
<unknown> http://localhost:8888/static/lab/vendors-node_modules_yjs_dist_yjs_mjs.7c22fc794e51ffbd0e42.js:6651:22
Array.forEach <anonymous>
typeListInsertGenericsAfter http://localhost:8888/static/lab/vendors-node_modules_yjs_dist_yjs_mjs.7c22fc794e51ffbd0e42.js:6624:11
typeListInsertGenerics http://localhost:8888/static/lab/vendors-node_modules_yjs_dist_yjs_mjs.7c22fc794e51ffbd0e42.js:6711:10
<unknown> http://localhost:8888/static/lab/vendors-node_modules_yjs_dist_yjs_mjs.7c22fc794e51ffbd0e42.js:7039:9
transact http://localhost:8888/static/lab/vendors-node_modules_yjs_dist_yjs_mjs.7c22fc794e51ffbd0e42.js:4829:14
YArray.insert http://localhost:8888/static/lab/vendors-node_modules_yjs_dist_yjs_mjs.7c22fc794e51ffbd0e42.js:7038:7
Set +2 Set((anonymous function), ...)
                          webpack://jupyterlab/node_modules/lib0/observable.js:30:56                                                                                     
Doc.on http://localhost:8888/static/lab/vendors-node_modules_yjs_dist_yjs_mjs.7c22fc794e51ffbd0e42.js:2209:11
new UndoManager http://localhost:8888/static/lab/vendors-node_modules_yjs_dist_yjs_mjs.7c22fc794e51ffbd0e42.js:5084:14
YCodeCell.setUndoManager http://localhost:8888/static/lab/vendors-node_modules_jupyter_ydoc_lib_index_js-node_modules_process_browser_js.fc8babfba933ff460960.js:398:33
<unknown> http://localhost:8888/static/lab/vendors-node_modules_jupyter_ydoc_lib_index_js-node_modules_process_browser_js.fc8babfba933ff460960.js:1584:15
Array.forEach <anonymous>
YNotebook.insertCells http://localhost:8888/static/lab/vendors-node_modules_jupyter_ydoc_lib_index_js-node_modules_process_browser_js.fc8babfba933ff460960.js:1583:16
YNotebook.insertCell http://localhost:8888/static/lab/vendors-node_modules_jupyter_ydoc_lib_index_js-node_modules_process_browser_js.fc8babfba933ff460960.js:1564:21
webpack://jupyterlab/packages/notebook/src/actions.tsx:404:22
Create a raw cell Memory change: +143 kB Leak detected: Yes

Leaking objects:

Object # added Retained size increase
ArraySearchMarker 1 +5 B
CodeCellModel 1 +359 B
ContentString 1 +689 B
Detached CSSStyleDeclaration 1 +60 B
Detached V8EventHandlerNonNull 1 +40 B
ObservableMap 1 +102 B
YArray 1 +164 B
YCodeCell 1 +107 B
YRawCell 1 +45 B
Detached DOMStringMap 2 +96 B
Set 2 +1.26 kB
UndoManager 2 +2.36 kB
YText 2 +469 B
StackItem 3 +1.3 kB
DeleteItem 4 +80 B
YMap 4 +872 B
ContentAny 5 +524 B
Detached HTMLCollection 5 +476 B
DeleteSet 6 +976 B
ContentType 7 +112 B
Detached DOMTokenList 9 +620 B
Detached HTMLDivElement 9 +22.6 kB
Signal 11 +450 B
ID 13 +260 B
Item 13 +2.27 kB
EventHandler 14 +448 B
Map 19 +2.83 kB
Detached V8EventListener 130 +10.9 kB
Detached EventListener 131 +20.4 kB
(closure) 141 +24.4 kB
Detached InternalNode 151 +21.6 kB

Leaking collections:

Type Change Preview Size increased at
Array +1 [{signal, slot, thisArg}, ...]
Object.connect  http://localhost:8888/static/lab/jlab_core.6882a32e5e247c101f12.js:10490:17
Signal.connect http://localhost:8888/static/lab/jlab_core.6882a32e5e247c101f12.js:10230:24
webpack://jupyterlab/packages/cell-toolbar/src/celltoolbartracker.ts:121:37
invokeSlot http://localhost:8888/static/lab/jlab_core.6882a32e5e247c101f12.js:10699:18
Object.emit http://localhost:8888/static/lab/jlab_core.6882a32e5e247c101f12.js:10657:17
Signal.emit http://localhost:8888/static/lab/jlab_core.6882a32e5e247c101f12.js:10256:17
webpack://jupyterlab/packages/notebook/src/widget.ts:1321:30
webpack://jupyterlab/packages/notebook/src/actions.tsx:408:28
webpack://jupyterlab/packages/notebook-extension/src/index.ts:2719:15
Array +1 [{signal, slot, thisArg}, ...]
Object.connect  http://localhost:8888/static/lab/jlab_core.6882a32e5e247c101f12.js:10490:17
Signal.connect http://localhost:8888/static/lab/jlab_core.6882a32e5e247c101f12.js:10230:24
webpack://jupyterlab/packages/notebook/src/notebooktools.ts:226:33
invokeSlot http://localhost:8888/static/lab/jlab_core.6882a32e5e247c101f12.js:10699:18
Object.emit http://localhost:8888/static/lab/jlab_core.6882a32e5e247c101f12.js:10657:17
Signal.emit http://localhost:8888/static/lab/jlab_core.6882a32e5e247c101f12.js:10256:17
webpack://jupyterlab/packages/notebook/src/tracker.ts:90:30
invokeSlot http://localhost:8888/static/lab/jlab_core.6882a32e5e247c101f12.js:10699:18
Object.emit http://localhost:8888/static/lab/jlab_core.6882a32e5e247c101f12.js:10657:17
Array +1 [1c22ec3b-3b72-401b-9360-ba05daceb7d0, ...]
                                     webpack://jupyterlab/packages/notebook/src/actions.tsx:2503:37            
Array.forEach <anonymous>
webpack://jupyterlab/packages/notebook/src/actions.tsx:2498:21
webpack://jupyterlab/packages/notebook/src/actions.tsx:350:12
webpack://jupyterlab/packages/notebook-extension/src/index.ts:2650:15
CommandRegistry.execute http://localhost:8888/static/lab/jlab_core.6882a32e5e247c101f12.js:5748:33
CommandRegistry._executeKeyBinding http://localhost:8888/static/lab/jlab_core.6882a32e5e247c101f12.js:5906:14
CommandRegistry.processKeydownEvent http://localhost:8888/static/lab/jlab_core.6882a32e5e247c101f12.js:5846:18
JupyterLab.evtKeydown http://localhost:8888/static/lab/jlab_core.6882a32e5e247c101f12.js:4660:23
Array +2 [StackItem, ...]
UndoManager.afterTransactionHandler  http://localhost:8888/static/lab/vendors-node_modules_yjs_dist_yjs_mjs.7c22fc794e51ffbd0e42.js:5064:15
webpack://jupyterlab/node_modules/lib0/observable.js:73:62
Array.forEach <anonymous>
webpack://jupyterlab/node_modules/lib0/observable.js:73:62
Array.<anonymous> http://localhost:8888/static/lab/vendors-node_modules_yjs_dist_yjs_mjs.7c22fc794e51ffbd0e42.js:4720:27
webpack://jupyterlab/node_modules/lib0/function.js:19:0
cleanupTransactions http://localhost:8888/static/lab/vendors-node_modules_yjs_dist_yjs_mjs.7c22fc794e51ffbd0e42.js:4722:62
transact http://localhost:8888/static/lab/vendors-node_modules_yjs_dist_yjs_mjs.7c22fc794e51ffbd0e42.js:4843:9
Doc.transact http://localhost:8888/static/lab/vendors-node_modules_yjs_dist_yjs_mjs.7c22fc794e51ffbd0e42.js:2050:5
Array +13 [Item, ...]
addStruct                    http://localhost:8888/static/lab/vendors-node_modules_yjs_dist_yjs_mjs.7c22fc794e51ffbd0e42.js:4295:11
Item.integrate http://localhost:8888/static/lab/vendors-node_modules_yjs_dist_yjs_mjs.7c22fc794e51ffbd0e42.js:11118:7
<unknown> http://localhost:8888/static/lab/vendors-node_modules_yjs_dist_yjs_mjs.7c22fc794e51ffbd0e42.js:6651:22
Array.forEach <anonymous>
typeListInsertGenericsAfter http://localhost:8888/static/lab/vendors-node_modules_yjs_dist_yjs_mjs.7c22fc794e51ffbd0e42.js:6624:11
typeListInsertGenerics http://localhost:8888/static/lab/vendors-node_modules_yjs_dist_yjs_mjs.7c22fc794e51ffbd0e42.js:6711:10
<unknown> http://localhost:8888/static/lab/vendors-node_modules_yjs_dist_yjs_mjs.7c22fc794e51ffbd0e42.js:7039:9
transact http://localhost:8888/static/lab/vendors-node_modules_yjs_dist_yjs_mjs.7c22fc794e51ffbd0e42.js:4829:14
YArray.insert http://localhost:8888/static/lab/vendors-node_modules_yjs_dist_yjs_mjs.7c22fc794e51ffbd0e42.js:7038:7
Set +2 Set((anonymous function), ...)
                          webpack://jupyterlab/node_modules/lib0/observable.js:30:56                                                                                     
Doc.on http://localhost:8888/static/lab/vendors-node_modules_yjs_dist_yjs_mjs.7c22fc794e51ffbd0e42.js:2209:11
new UndoManager http://localhost:8888/static/lab/vendors-node_modules_yjs_dist_yjs_mjs.7c22fc794e51ffbd0e42.js:5084:14
YCodeCell.setUndoManager http://localhost:8888/static/lab/vendors-node_modules_jupyter_ydoc_lib_index_js-node_modules_process_browser_js.fc8babfba933ff460960.js:398:33
<unknown> http://localhost:8888/static/lab/vendors-node_modules_jupyter_ydoc_lib_index_js-node_modules_process_browser_js.fc8babfba933ff460960.js:1584:15
Array.forEach <anonymous>
YNotebook.insertCells http://localhost:8888/static/lab/vendors-node_modules_jupyter_ydoc_lib_index_js-node_modules_process_browser_js.fc8babfba933ff460960.js:1583:16
YNotebook.insertCell http://localhost:8888/static/lab/vendors-node_modules_jupyter_ydoc_lib_index_js-node_modules_process_browser_js.fc8babfba933ff460960.js:1564:21
webpack://jupyterlab/packages/notebook/src/actions.tsx:404:22
- Drag and drop a cell

File editor memory leaks

Create a file Memory change: -73.5 kB Leak detected: No

Leaking objects:

Object # added Retained size increase
Detached HTMLUListElement 1 +2.29 kB
Detached V8EventHandlerNonNull 1 +40 B
VirtualElementPass 1 +46 B
Detached HTMLButtonElement 2 +23.7 kB
Detached SVGCircleElement 2 +1.1 kB
HTMLDivElement 2 +124 B
LabIcon 2 +1.07 kB
Detached CSSStyleDeclaration 3 +220 B
Detached HTMLLIElement 3 +5.1 kB
Detached NodeList 3 +196 B
NavigationHistoryEntry 3 +720 B
VirtualText 3 +109 B
Detached SVGGElement 4 +2.94 kB
VirtualElement 4 +2.17 kB
Detached SVGAnimatedPreserveAspectRatio 5 +320 B
Detached SVGAnimatedRect 5 +320 B
Detached SVGPathElement 5 +1.77 kB
Detached SVGSVGElement 5 +7.89 kB
Detached HTMLSpanElement 6 +2.22 kB
Detached DOMStringMap 7 +364 B
Detached SVGAnimatedNumber 7 +448 B
Detached Attr 10 +720 B
Detached Text 10 +704 B
Detached HTMLCollection 13 +1.41 kB
Detached DOMTokenList 14 +916 B
Detached HTMLDivElement 15 +32.6 kB
Detached SVGAnimatedString 16 +896 B
Detached SVGAnimatedTransformList 16 +1.02 kB
Detached SVGAnimatedLength 26 +1.66 kB
Array 42 +24.8 kB
Detached V8EventListener 130 +10.9 kB
Detached EventListener 131 +20.4 kB
(closure) 140 +27.5 kB
✔ Opening a text file (65861ms)

Notebook memory leaks

Create a notebook Memory change: +31.5 kB Leak detected: Yes

Leaking objects:

Object # added Retained size increase
Detached HTMLUListElement 1 +2.21 kB
Detached V8EventHandlerNonNull 1 +40 B
VirtualElementPass 1 +55 B
Detached HTMLButtonElement 2 +23.4 kB
Detached SVGCircleElement 2 +1.1 kB
HTMLDivElement 2 +1 B
LabIcon 2 +139 B
Detached CSSStyleDeclaration 3 +252 B
Detached HTMLLIElement 3 +6.01 kB
Detached NodeList 3 +240 B
NavigationHistoryEntry 3 +720 B
VirtualText 3 +108 B
VirtualElement 4 +1.23 kB
Detached SVGAnimatedPreserveAspectRatio 5 +320 B
Detached SVGAnimatedRect 5 +320 B
Detached SVGSVGElement 5 +9.29 kB
Detached HTMLSpanElement 6 +3.08 kB
Detached SVGGElement 6 +4.9 kB
Detached SVGPathElement 7 +2.47 kB
Detached SVGAnimatedNumber 9 +576 B
Detached Attr 10 +720 B
Detached Text 10 +704 B
Detached HTMLCollection 13 +1.33 kB
Detached DOMTokenList 15 +1.01 kB
Detached HTMLDivElement 15 +33.2 kB
Detached SVGAnimatedString 20 +1.12 kB
Detached SVGAnimatedTransformList 20 +1.28 kB
Detached SVGAnimatedLength 26 +1.66 kB
Detached V8EventListener 130 +10.9 kB
Detached EventListener 131 +20.4 kB
(closure) 138 +42.4 kB
✔ Opening a notebook (68849ms)

2 passing (6m)
1 pending
1 failing

   Adding a cell:

  Create a code cell - Objects leaking
  + expected - actual

  -1354
  +1308
  
  at file:///home/runner/work/_actions/jupyterlab/benchmarks/v1/memory-leaks/tests/utils.mjs:43:16
  at Array.forEach (<anonymous>)
  at expectNoLeaks (file:///home/runner/work/_actions/jupyterlab/benchmarks/v1/memory-leaks/tests/utils.mjs:28:11)
  at testScenario (file:///home/runner/work/_actions/jupyterlab/benchmarks/v1/memory-leaks/tests/utils.mjs:230:3)
  at async Context.<anonymous> (file:///home/runner/work/_actions/jupyterlab/benchmarks/v1/memory-leaks/tests/cell.test.mjs:7:5)

@github-actions github-actions bot locked as resolved and limited conversation to collaborators Mar 21, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Markdown table of contents doesn't handle YAML frontmatter
3 participants