jupyterlab-cell-lock


Namejupyterlab-cell-lock JSON
Version 0.1.1 PyPI version JSON
download
home_pageNone
SummaryJupyterLab extension for easily locking cells, making them read-only and undeletable.
upload_time2025-08-31 21:38:58
maintainerNone
docs_urlNone
authorJordan Bradford
requires_python>=3.9
licenseBSD 3-Clause License Copyright (c) 2025, Jordan Bradford All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
keywords jupyter jupyterlab jupyterlab-extension
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            [![build](https://github.com/jrdnbradford/jupyterlab-cell-lock/actions/workflows/build.yaml/badge.svg)](https://github.com/jrdnbradford/jupyterlab-cell-lock/actions/workflows/build.yaml)
[![PyPI version](https://img.shields.io/pypi/v/jupyterlab-cell-lock.svg)](https://pypi.org/project/jupyterlab-cell-lock/)

# 🔒 jupyterlab-cell-lock

![JupyterLab UI showing "Lock all cells" and "Unlock all cells" buttons in the toolbar with lock and edit icons, respectively](https://raw.githubusercontent.com/jrdnbradford/jupyterlab-cell-lock/main/docs/img/ui.png)

A JupyterLab extension for easily locking cells, making them read-only and undeletable.

## ⚠️ Limitations

This extension modifies the cell metadata (`editable` and `deletable` fields) in the notebook file. This is _not_ a security feature. Any user with knowledge of JupyterLab or the notebook file format can manually edit or remove this metadata to bypass the lock. It is primarily for preventing accidental modifications, not intentional ones. You should always use source control for your code.

## 📝 Requirements

- JupyterLab >= 4.0, < 5

## 📦 Installation

```sh
pip install jupyterlab-cell-lock
```

# 💡 Use Cases

## Educators and Instructors

- **Distributing Assignments**: You can provide a template notebook with introductory text, problem descriptions, or starter code in read-only cells. This prevents students from accidentally deleting or changing the core parts of the assignment, while still allowing them to add their answers in new or designated cells.

- **Interactive Lecture Notes**: Share lecture notebooks with pre-populated, locked cells containing explanations and examples. Students can run the code, add their own notes, or experiment without altering your content.

## Students and Learners

- **Protecting Content**: When working with course material, tutorials, and assignments you can lock your notebook to ensure you don't accidentally delete or modify your work while experimenting with new cells.

## Researchers and Teams

- **Sharing Analyses and Code**: When sharing a notebook, you can lock the cells containing the final results, plots, and key methodology. This helps others on your team run the notebook and see the output without risk of accidentally changing the notebook.

- **Creating Templates**: Lock down template notebooks used for standard data analysis workflows. This ensures everyone on the team uses the same core steps while allowing them to add their own custom analyses.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "jupyterlab-cell-lock",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": null,
    "keywords": "jupyter, jupyterlab, jupyterlab-extension",
    "author": "Jordan Bradford",
    "author_email": null,
    "download_url": "https://files.pythonhosted.org/packages/4f/e0/53bdbfca2c363e53d43f8336755339e9afa1d4a1ef385042dddd64fdb0ce/jupyterlab_cell_lock-0.1.1.tar.gz",
    "platform": null,
    "description": "[![build](https://github.com/jrdnbradford/jupyterlab-cell-lock/actions/workflows/build.yaml/badge.svg)](https://github.com/jrdnbradford/jupyterlab-cell-lock/actions/workflows/build.yaml)\n[![PyPI version](https://img.shields.io/pypi/v/jupyterlab-cell-lock.svg)](https://pypi.org/project/jupyterlab-cell-lock/)\n\n# \ud83d\udd12 jupyterlab-cell-lock\n\n![JupyterLab UI showing \"Lock all cells\" and \"Unlock all cells\" buttons in the toolbar with lock and edit icons, respectively](https://raw.githubusercontent.com/jrdnbradford/jupyterlab-cell-lock/main/docs/img/ui.png)\n\nA JupyterLab extension for easily locking cells, making them read-only and undeletable.\n\n## \u26a0\ufe0f Limitations\n\nThis extension modifies the cell metadata (`editable` and `deletable` fields) in the notebook file. This is _not_ a security feature. Any user with knowledge of JupyterLab or the notebook file format can manually edit or remove this metadata to bypass the lock. It is primarily for preventing accidental modifications, not intentional ones. You should always use source control for your code.\n\n## \ud83d\udcdd Requirements\n\n- JupyterLab >= 4.0, < 5\n\n## \ud83d\udce6 Installation\n\n```sh\npip install jupyterlab-cell-lock\n```\n\n# \ud83d\udca1 Use Cases\n\n## Educators and Instructors\n\n- **Distributing Assignments**: You can provide a template notebook with introductory text, problem descriptions, or starter code in read-only cells. This prevents students from accidentally deleting or changing the core parts of the assignment, while still allowing them to add their answers in new or designated cells.\n\n- **Interactive Lecture Notes**: Share lecture notebooks with pre-populated, locked cells containing explanations and examples. Students can run the code, add their own notes, or experiment without altering your content.\n\n## Students and Learners\n\n- **Protecting Content**: When working with course material, tutorials, and assignments you can lock your notebook to ensure you don't accidentally delete or modify your work while experimenting with new cells.\n\n## Researchers and Teams\n\n- **Sharing Analyses and Code**: When sharing a notebook, you can lock the cells containing the final results, plots, and key methodology. This helps others on your team run the notebook and see the output without risk of accidentally changing the notebook.\n\n- **Creating Templates**: Lock down template notebooks used for standard data analysis workflows. This ensures everyone on the team uses the same core steps while allowing them to add their own custom analyses.\n",
    "bugtrack_url": null,
    "license": "BSD 3-Clause License\n        \n        Copyright (c) 2025, Jordan Bradford\n        All rights reserved.\n        \n        Redistribution and use in source and binary forms, with or without\n        modification, are permitted provided that the following conditions are met:\n        \n        1. Redistributions of source code must retain the above copyright notice, this\n           list of conditions and the following disclaimer.\n        \n        2. Redistributions in binary form must reproduce the above copyright notice,\n           this list of conditions and the following disclaimer in the documentation\n           and/or other materials provided with the distribution.\n        \n        3. Neither the name of the copyright holder nor the names of its\n           contributors may be used to endorse or promote products derived from\n           this software without specific prior written permission.\n        \n        THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n        AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n        IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n        DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n        FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n        DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n        SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n        CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n        OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n        OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.",
    "summary": "JupyterLab extension for easily locking cells, making them read-only and undeletable.",
    "version": "0.1.1",
    "project_urls": {
        "Bug Tracker": "https://github.com/jrdnbradford/jupyterlab-cell-lock/issues",
        "Homepage": "https://github.com/jrdnbradford/jupyterlab-cell-lock",
        "Repository": "https://github.com/jrdnbradford/jupyterlab-cell-lock.git"
    },
    "split_keywords": [
        "jupyter",
        " jupyterlab",
        " jupyterlab-extension"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "97bdb3c97b79fc619446a4a5d9e9578908a0d2210687f289b87e82cca8f89df3",
                "md5": "9c92eb73f1a2137e88dae0d91d38c558",
                "sha256": "0da2e4a5d3e613502460b940092d6ee326a9fd0acace94b63b8466d0cddd436d"
            },
            "downloads": -1,
            "filename": "jupyterlab_cell_lock-0.1.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "9c92eb73f1a2137e88dae0d91d38c558",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9",
            "size": 209021,
            "upload_time": "2025-08-31T21:38:57",
            "upload_time_iso_8601": "2025-08-31T21:38:57.184740Z",
            "url": "https://files.pythonhosted.org/packages/97/bd/b3c97b79fc619446a4a5d9e9578908a0d2210687f289b87e82cca8f89df3/jupyterlab_cell_lock-0.1.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "4fe053bdbfca2c363e53d43f8336755339e9afa1d4a1ef385042dddd64fdb0ce",
                "md5": "df0504fe7016b0da845bfc616723aecc",
                "sha256": "db9491984399c196dd5e00a7af8b8ed77ddd5a7e40524adddfc18f85d1a5e4c1"
            },
            "downloads": -1,
            "filename": "jupyterlab_cell_lock-0.1.1.tar.gz",
            "has_sig": false,
            "md5_digest": "df0504fe7016b0da845bfc616723aecc",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 157658,
            "upload_time": "2025-08-31T21:38:58",
            "upload_time_iso_8601": "2025-08-31T21:38:58.670229Z",
            "url": "https://files.pythonhosted.org/packages/4f/e0/53bdbfca2c363e53d43f8336755339e9afa1d4a1ef385042dddd64fdb0ce/jupyterlab_cell_lock-0.1.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-31 21:38:58",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "jrdnbradford",
    "github_project": "jupyterlab-cell-lock",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "jupyterlab-cell-lock"
}
        
Elapsed time: 2.09945s