Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork3.8k
Improve context handling#4453
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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Uh oh!
There was an error while loading.Please reload this page.
Changes from1 commit
7a5bd0078df852db400671e298d72e93f839c7c4a892d58d038167666ede2da0ff19f64aa4de658a7a4b3fc6bde1107f6912dfc8eaf12ced55f8b32631d0e18b3b7e1db7fc2dc90b59bc3496d1f7b03da78e85c3b60aaf51a6b58d11ffaafcbb1b6a6554c24b0a32345d9d5db7ecb3c8447ab04ebac5f0ae8b29b087d1d90468ec2ae892b4ba2802f672e84357b5c0799c6c455a21d5a7b618baec7d693d72fd54ce1abda5da476064212a65027e9ef12be487bb239a56e5766427a67e4efcad221040a0bf94b1ed031011dba0b63414fd43413f40163c41c13ab63726749792693810cac907afFile filter
Filter by extension
Conversations
Uh oh!
There was an error while loading.Please reload this page.
Jump to
Uh oh!
There was an error while loading.Please reload this page.
Diff view
Diff view
- Loading branch information
Uh oh!
There was an error while loading.Please reload this page.
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -15,6 +15,16 @@ JupyterLab can be extended in several ways: | ||
| For this section, the term 'document' refers to any visual thing that | ||
| is backed by a file stored on disk (e.g. uses Contents API). | ||
| ||
| Overview of document architecture | ||
| --------------------------------- | ||
| A 'document' in JupyterLab is represented by a model instance implementing the `IModel http://jupyterlab.github.io/jupyterlab/interfaces/_docregistry_src_registry_.documentregistry.imodel.html`__ interface. The model interface is intentionally fairly small, and concentrates on representing the data in the document and signaling changes to that data. Each model has an associated `context http://jupyterlab.github.io/jupyterlab/interfaces/_docregistry_src_registry_.documentregistry.icontext.html`__ instance as well. The context for a model is the bridge between the internal data of the document, stored in the model, and the file metadata and operations possible on the file, such as save and revert. Since many objects will need both the context and the model, the context contains a reference to the model as its `.model` attribute. | ||
| A single file path can have multiple different models (and hence different contexts) representing the file. For example, a notebook can be opened with a notebook model and with a text model. Models for the same file path do not directly communicate with each other. | ||
| ||
| `Document widgets http://jupyterlab.github.io/jupyterlab/interfaces/_docregistry_src_registry_.documentregistry.ireadywidget.html`__ represent a view of a document model. There can be multiple document widgets associated with a single document model, and they naturally stay in sync with each other since they are views on the same underlying data model. | ||
| The `Document | ||
| Registry <http://jupyterlab.github.io/jupyterlab/classes/_docregistry_src_registry_.documentregistry.html>`__ | ||
| is where document types and factories are registered. Plugins can | ||
| @@ -32,10 +42,10 @@ Document Registry | ||
| *Document widget extensions* in the JupyterLab application can register: | ||
| - file types | ||
| - model factories for specific file types | ||
| - widget factories for specific model factories | ||
| - widget extension factories | ||
| - file creators | ||
| `Widget Factories <http://jupyterlab.github.io/jupyterlab/classes/_docregistry_src_registry_.documentregistry.html#addwidgetfactory>`__ | ||
| @@ -118,33 +128,3 @@ The *Document Manager* handles: | ||
| The *File Browser* uses the *Document Manager* to open documents and | ||
| manage them. | ||