{"id":13606377,"url":"https://github.com/krassowski/jupyter-manim","last_synced_at":"2025-08-21T03:08:20.550Z","repository":{"id":45184657,"uuid":"188053613","full_name":"krassowski/jupyter-manim","owner":"krassowski","description":"manim cell magic for IPython/Jupyter to show the output video","archived":false,"fork":false,"pushed_at":"2022-01-02T21:32:22.000Z","size":110,"stargazers_count":198,"open_issues_count":7,"forks_count":11,"subscribers_count":13,"default_branch":"master","last_synced_at":"2025-07-21T02:49:06.469Z","etag":null,"topics":["ipython-magic","jupyer","jupyter-magic","manim"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/krassowski.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-05-22T14:18:39.000Z","updated_at":"2025-05-30T06:52:19.000Z","dependencies_parsed_at":"2022-08-29T23:22:37.531Z","dependency_job_id":null,"html_url":"https://github.com/krassowski/jupyter-manim","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/krassowski/jupyter-manim","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krassowski%2Fjupyter-manim","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krassowski%2Fjupyter-manim/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krassowski%2Fjupyter-manim/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krassowski%2Fjupyter-manim/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/krassowski","download_url":"https://codeload.github.com/krassowski/jupyter-manim/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krassowski%2Fjupyter-manim/sbom","scorecard":{"id":569586,"data":{"date":"2025-08-11","repo":{"name":"github.com/krassowski/jupyter-manim","commit":"d8462d99926f0d596726c21b30e6992400cc4224"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.3,"checks":[{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":2,"reason":"Found 4/18 approved changesets -- score normalized to 2","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: github.com/krassowski/jupterlab-.github/SECURITY.md:1","Info: Found linked content: github.com/krassowski/jupterlab-.github/SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: github.com/krassowski/jupterlab-.github/SECURITY.md:1","Info: Found text in security policy: github.com/krassowski/jupterlab-.github/SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Vulnerabilities","score":3,"reason":"7 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-29gw-9793-fvw7","Warn: Project is vulnerable to: PYSEC-2015-24 / GHSA-4vwq-x64q-j4cj","Warn: Project is vulnerable to: PYSEC-2017-46 / GHSA-66gw-5xpf-gfp5","Warn: Project is vulnerable to: PYSEC-2015-25 / GHSA-92mr-v722-f48m","Warn: Project is vulnerable to: PYSEC-2022-12 / GHSA-pq7m-3gw7-gq5x","Warn: Project is vulnerable to: PYSEC-2017-47","Warn: Project is vulnerable to: PYSEC-2022-238 / GHSA-h3qr-fjhm-jphw"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 19 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-20T15:56:46.222Z","repository_id":45184657,"created_at":"2025-08-20T15:56:46.222Z","updated_at":"2025-08-20T15:56:46.222Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271420139,"owners_count":24756490,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-21T02:00:08.990Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ipython-magic","jupyer","jupyter-magic","manim"],"created_at":"2024-08-01T19:01:08.635Z","updated_at":"2025-08-21T03:08:20.499Z","avatar_url":"https://github.com/krassowski.png","language":"Python","funding_links":[],"categories":["Jupyter-magic拓展","Visualization"],"sub_categories":[],"readme":"# jupyter-manim\n[![Build Status](https://travis-ci.org/krassowski/jupyter-manim.svg?branch=master)](https://travis-ci.org/krassowski/jupyter-manim)\n[![codecov](https://codecov.io/gh/krassowski/jupyter-manim/branch/master/graph/badge.svg)](https://codecov.io/gh/krassowski/jupyter-manim)\n[![MIT License](https://img.shields.io/badge/license-MIT-blue.svg?style=flat)](http://choosealicense.com/licenses/mit/)\n[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/krassowski/jupyter-manim/master?filepath=Example.ipynb)\n[![Colab](https://camo.githubusercontent.com/52feade06f2fecbf006889a904d221e6a730c194/68747470733a2f2f636f6c61622e72657365617263682e676f6f676c652e636f6d2f6173736574732f636f6c61622d62616467652e737667)](https://colab.research.google.com/gist/cjds/825d9acc80cb0b92bb877bbe2f468d70/example-jupyter-manim.ipynb)\n\nIntegrates 3b1b's [ManimCairo](https://github.com/3b1b/manim) (cairo-backend branch)\nwith Jupyter displaying the resulting video when using `%%manim` cell magic to wrap a scene definition.\n\n**WARNING**: This library only works for ManimCairo (the cairo-backend branch in 3b1b's version). It does not work for ManimCE (which already has Jupyter support by default)\nor ManimGL (which does not support Jupyter at all, as of time of writing).\n\n### Quick preview\n\n\u003cimg src='screenshots/cell_magic_demo.png'\u003e\n\nThe code in the example above comes from the excellent [manim tutorial](https://github.com/malhotra5/Manim-Tutorial).\n\nRun a live demo in your browser [by clicking here](https://mybinder.org/v2/gh/krassowski/jupyter-manim/master?filepath=Example.ipynb).\n\n### Installation\n\n```sh\npip3 install jupyter-manim\n```\n\n### Usage\n\nTo enable the manim magic please run `import jupyter_manim` first. Then, you can use the magic as if it was the manim command: your arguments will be passed to manim, exactly as if these were command line options.\n\nFor example, to render scene defined with class `Shapes(Scene)` use\n\n```python\n%%manim Shapes\nfrom manimlib.scene.scene import Scene\nfrom manimlib.mobject.geometry import Circle\nfrom manimlib.animation.creation import ShowCreation\n\nclass Shapes(Scene):\n\n    def construct(self):\n        circle = Circle()\n        self.play(ShowCreation(circle))\n```\n\n\nSince version 1.0, the code is no longer required to be self-contained -\n`jupyter_manim` will attempt to export your variables (and imported objects) from the notebook into the manim script.\n\nMost variables can be easily exported, however there are limitations; in short [everything which can be pickled](https://docs.python.org/3/library/pickle.html#what-can-be-pickled-and-unpickled) can be exported. Additionally, variables whose names start with an underscore will be ommited.\n\n\nTo display manim help and options use:\n\n```\n%%manim -h\npass\n```\n\n\nThe `%%manim` magic (by default) hides the progress bars as well as other logging messages generated by manim.\nYou can disable this behaviour using `--verbose` flag\n\n\nIn the latest version of manimlib you can import everything at once using:\n\n```python\nfrom manimlib.imports import *\n```\n\n#### Video player control options\n\n - `--no-controls` - hides the controls\n - `--no-autoplay` - disables the autoplay feature\n - `-r` or `--resolution` - control the height and width of the video player;\n  this option is shared with manim and requires the resolution in following format:\n  `height,width`, e.g. `%%manim Shapes -r 200,1000`\n - `--base64` send the video with a `data:` URL instead of a local path - useful for remote notebooks like Google Colab,\n or to embed the video in notebook (note: the notebook size may increase rapidly)\n\n\n### Compatibility and testing\n\nThis package is continuously tested with Python 3.7 on Ubuntu, Mac OS an Windows.\n\nTests have to be run with ipython, as the magic relies on IPython instance being available:\n\n```bash\npython3 setup.py install\nipython -m pytest -- --cov=.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkrassowski%2Fjupyter-manim","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkrassowski%2Fjupyter-manim","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkrassowski%2Fjupyter-manim/lists"}