{ "info": { "author": "Haavard Kvamme", "author_email": "haavard.kvamme@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 2 - Pre-Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Natural Language :: English", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "# safescope\n[![Build Status](https://travis-ci.org/havakv/safescope.svg?branch=master)](https://travis-ci.org/havakv/safescope)\n[![PyPI](https://img.shields.io/pypi/v/safescope.svg)](https://pypi.org/project/safescope/)\n![PyPI - Python Version](https://img.shields.io/pypi/pyversions/safescope.svg)\n[![License](https://img.shields.io/badge/License-BSD%202--Clause-orange.svg)](https://github.com/havakv/safescope/blob/master/LICENSE)\n\n**safescope** is a small python package useful for development in jupyter notebooks.\nThe goal is to prevent functions from using global variables and instead raise a `NameError`.\nThis is achieved by mimicking a module, and define all functions in that module (named `side_scope`).\n\n## Example\n\nThe main part of **safescope** is the decorator `@safescope`. This mimics writing the function in a file `side_scope.py` and importing this function to the notebook. Hence, functions decorated with `@safescope` will not have access to variables declared in the notebook environment.\n\nIn the example below, only `foo(1)` will execute, as `bar(1)` returns a `NameError`.\n```python\nfrom safescope import safescope\n\nx = 9\n\ndef foo(y):\n return x + y\n\n@safescope\ndef bar(y):\n return x + y\n\nfoo(1) # Returns 10\nbar(1) # Raise \"NameError: name 'x' is not defined\"\n```\n\nBy using `Imports`, the imports are added to both the main scope and the `side_scope`, making them available for the functions decorated with `@safescope`.\n```python\nfrom safescope import safescope, Imports\n\nwith Imports():\n import numpy as np\n\n@safescope\ndef arange(n):\n return np.arange(n)\n\narange(4) # Returns array([0, 1, 2, 3])\n```\n\n## Installation\n\n**safescope** can either be installed from pypi with pip/pip3:\n```bash\npip install safescope\n```\nor from github with:\n```bash\npip install git+git://github.com/havakv/safescope.git\n```\nor from source by cloning the repo:\n```bash\ngit clone https://github.com/havakv/safescope.git\ncd safescope\npython setup.py install\n```\n\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/havakv/safescope", "keywords": "safescope", "license": "BSD license", "maintainer": "", "maintainer_email": "", "name": "safescope", "package_url": "https://pypi.org/project/safescope/", "platform": "", "project_url": "https://pypi.org/project/safescope/", "project_urls": { "Homepage": "https://github.com/havakv/safescope" }, "release_url": "https://pypi.org/project/safescope/0.2.6/", "requires_dist": null, "requires_python": ">=3.5", "summary": "Python package for preventing use of variables from global scope.", "version": "0.2.6" }, "last_serial": 5539329, "releases": { "0.1.1": [ { "comment_text": "", "digests": { "md5": "d7b9f028b3af351bdcb662e8bbd91f2c", "sha256": "118e3f79cdab89d60c1d44f437aa747ff6d27ee63dfaf9b0ec38c2c54c6fd98d" }, "downloads": -1, "filename": "safescope-0.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d7b9f028b3af351bdcb662e8bbd91f2c", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 4705, "upload_time": "2018-01-15T09:21:15", "url": "https://files.pythonhosted.org/packages/c2/01/6c31a288852759edca187029e6ac0579911d19dc06d7a419c72b401b6d29/safescope-0.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "eeeee45071c539bb62c49f202da2b6a3", "sha256": "1f899b4a9390d3a57f4c7b1195f2af6c78deea7671c561c705f26a2e311114b6" }, "downloads": -1, "filename": "safescope-0.1.1.tar.gz", "has_sig": false, "md5_digest": "eeeee45071c539bb62c49f202da2b6a3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12303, "upload_time": "2018-01-15T09:21:16", "url": "https://files.pythonhosted.org/packages/7b/18/a6c68179c058619ecbc1bb3eb156abe9c84bf958b99dad5dfc3751de0946/safescope-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "25ab393d1475d35b408b3577893933da", "sha256": "4e78fd841506c0ff23ded18ea31c55419804c46d94fc2acccb1be66b8fcc0eb4" }, "downloads": -1, "filename": "safescope-0.1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "25ab393d1475d35b408b3577893933da", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 4706, "upload_time": "2018-01-16T02:15:18", "url": "https://files.pythonhosted.org/packages/7b/ba/743d7b64f14a075e453c7dc92d519943d01995466aeeaac3097a86f588df/safescope-0.1.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7a5c72d67d769cb3d422f123cde43ec8", "sha256": "368d050af62874ae697be6bf61ef42abfed466863f6fa5e4576882f4544e3551" }, "downloads": -1, "filename": "safescope-0.1.2.tar.gz", "has_sig": false, "md5_digest": "7a5c72d67d769cb3d422f123cde43ec8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12302, "upload_time": "2018-01-16T02:15:29", "url": "https://files.pythonhosted.org/packages/28/ac/afef1b7ac54bdd8f01f1e551ccff517c0b5a0a5da2857b30f78954730d97/safescope-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "575661c86b9bc39e730d868f65860b08", "sha256": "a75e3015d511eec500017460cd067bafd5e016e016b259e112cabff8d765ef03" }, "downloads": -1, "filename": "safescope-0.1.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "575661c86b9bc39e730d868f65860b08", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 4662, "upload_time": "2018-01-16T04:04:47", "url": "https://files.pythonhosted.org/packages/08/af/ff4b91027413c0f54b9e7b8559d7483d0988182200011c89dda683926dff/safescope-0.1.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "29efa6700b044264a96015588fc56fd0", "sha256": "0f7d35fb628f1da316fa81b7828fb4625d25b414b91517d6e3d5bc5fb0d89705" }, "downloads": -1, "filename": "safescope-0.1.3.tar.gz", "has_sig": false, "md5_digest": "29efa6700b044264a96015588fc56fd0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12273, "upload_time": "2018-01-16T04:04:51", "url": "https://files.pythonhosted.org/packages/15/1e/fc0255decf9c11c3e8ca44463dd5e04e0aa456e14691ebccc4bb0db279ba/safescope-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "b779a20b3154e83b31479e970371121a", "sha256": "5901c4d59a1857cb534f20f5dcab373405a139eabb6572c38de2e1e5f60fc476" }, "downloads": -1, "filename": "safescope-0.1.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b779a20b3154e83b31479e970371121a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 4661, "upload_time": "2018-01-16T04:26:37", "url": "https://files.pythonhosted.org/packages/22/7b/3b7e05c6b0bc063ff0b8ac03cc6d9f031ddbadbc1e6831684db4cfb46559/safescope-0.1.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2755820d5144e3da4d87e05b5372bb45", "sha256": "ea8f4c94905f63a13d6e2099f492bc9d2cba4d83c8be45199572d115754073c9" }, "downloads": -1, "filename": "safescope-0.1.4.tar.gz", "has_sig": false, "md5_digest": "2755820d5144e3da4d87e05b5372bb45", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12276, "upload_time": "2018-01-16T04:26:39", "url": "https://files.pythonhosted.org/packages/ff/51/e7f1e0b7a816b58c6333f8305af09b225507ce73191388b6a58a7bc3dc62/safescope-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "6d552a2ff80dc2ed84f2305c351b8840", "sha256": "9a04ccd699fb8528a4372102ce68c6be74dc8104fd6010254dabb2e69ea6c4f3" }, "downloads": -1, "filename": "safescope-0.1.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "6d552a2ff80dc2ed84f2305c351b8840", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 4663, "upload_time": "2018-01-16T04:28:30", "url": "https://files.pythonhosted.org/packages/6c/c4/658a1999dfbcc0ed60564b92c78bb78ebd429c374cab08b86ecad0425faf/safescope-0.1.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "290eed2f309dfee051c0a8df2ba4ab04", "sha256": "898499d783eadd655b69eba28ae5867a404f3b3ed52843cb97f3ea4ee27a0523" }, "downloads": -1, "filename": "safescope-0.1.5.tar.gz", "has_sig": false, "md5_digest": "290eed2f309dfee051c0a8df2ba4ab04", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12271, "upload_time": "2018-01-16T04:28:31", "url": "https://files.pythonhosted.org/packages/a9/49/5cda43aa693b0169ce20454834cdea15370c3eb58dfabe8d01335f1769e2/safescope-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "6f6eb8b87a7cf3061a8760edeb598be2", "sha256": "595cc95afd92e78488b1e19bfd4ea049ac9f84c212246883369e13b0562c9954" }, "downloads": -1, "filename": "safescope-0.1.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "6f6eb8b87a7cf3061a8760edeb598be2", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 4700, "upload_time": "2018-01-30T03:22:52", "url": "https://files.pythonhosted.org/packages/af/7f/1fbeb23b4e04ed10f6cde329378796c11a2fed2bd80c97cbda6503f6ebae/safescope-0.1.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f67ef9fda5e383217d0fa648abae4b14", "sha256": "fa02d6e75d00be7569c42e403fa4c328663b75c4789666873730f3a30752d0d1" }, "downloads": -1, "filename": "safescope-0.1.6.tar.gz", "has_sig": false, "md5_digest": "f67ef9fda5e383217d0fa648abae4b14", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12362, "upload_time": "2018-01-30T03:22:53", "url": "https://files.pythonhosted.org/packages/5a/7c/354824da328825fdc921858f8ce82ebbb33bf4cc8712a85540d9acba4c83/safescope-0.1.6.tar.gz" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "636aaa5f05af1960a03b2be4cda8ac1b", "sha256": "436d3906b4c751af07e18e4834f07bb6885caccc43b9998402b55f352be8ab78" }, "downloads": -1, "filename": "safescope-0.1.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "636aaa5f05af1960a03b2be4cda8ac1b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 4786, "upload_time": "2018-01-30T21:30:53", "url": "https://files.pythonhosted.org/packages/7c/c4/95294c1f0a3e5822e122d0a19e520f892bd59f44694574c50e2b827d5f2c/safescope-0.1.7-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "526973e09f630dd26a863c25e1eff6de", "sha256": "5df7f57385ba27eee25777a7a17bb1eaa6799dad197d0d2cb9c664c3f7e777ad" }, "downloads": -1, "filename": "safescope-0.1.7.tar.gz", "has_sig": false, "md5_digest": "526973e09f630dd26a863c25e1eff6de", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12438, "upload_time": "2018-01-30T21:30:55", "url": "https://files.pythonhosted.org/packages/f5/60/802e2783d3332a73392644cd157d19e8440cdc7ca917449f0e46bed775d9/safescope-0.1.7.tar.gz" } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "b43f09fca99e846d79bae0b1b3251fcc", "sha256": "02bf5d12332a477a735afdbbc7356f909b9db4e443df1b8521b95f63f01ed51c" }, "downloads": -1, "filename": "safescope-0.1.8-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b43f09fca99e846d79bae0b1b3251fcc", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 4798, "upload_time": "2018-01-30T23:44:13", "url": "https://files.pythonhosted.org/packages/8f/3b/05d4820d69539b5fdc2b23021773a04b8b848114c32399193f309e028464/safescope-0.1.8-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fa1090f9b91aa5a10bef6e62ab286417", "sha256": "f285b86c50fee67043910c473a933d23af2b81e8fec5f692ce93bf22d5439a2a" }, "downloads": -1, "filename": "safescope-0.1.8.tar.gz", "has_sig": false, "md5_digest": "fa1090f9b91aa5a10bef6e62ab286417", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12445, "upload_time": "2018-01-30T23:44:14", "url": "https://files.pythonhosted.org/packages/48/32/990fe129e27173cf16689ef2dcc7f89d449a884061efb641c6c07fd09cd9/safescope-0.1.8.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "40578ccadb3e55c008be139e5e2bb7ca", "sha256": "61fbeb4f8325cea82816d13c4d97a969f7110990f6286c62e94382e956a72085" }, "downloads": -1, "filename": "safescope-0.2.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "40578ccadb3e55c008be139e5e2bb7ca", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.5", "size": 4569, "upload_time": "2019-07-16T07:50:52", "url": "https://files.pythonhosted.org/packages/45/e8/7d56fd9df3a8ffefd9fa570b36c90051407324615dd746b0f9e71bb7778d/safescope-0.2.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f65dc3fc29e8ad3710063fbde5334f3a", "sha256": "9a9a840f63a23e718ae1c8e9d13f1b112b3184abed5c9ed63f7a434ef7ec5e64" }, "downloads": -1, "filename": "safescope-0.2.2.tar.gz", "has_sig": false, "md5_digest": "f65dc3fc29e8ad3710063fbde5334f3a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 4231, "upload_time": "2019-07-16T07:50:53", "url": "https://files.pythonhosted.org/packages/1e/88/f342f88fd064a0c325949a72ed2703a4aa69c4f025456c531db49add1d42/safescope-0.2.2.tar.gz" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "21c15c462430e4fd7de12d1183a4f246", "sha256": "bb588da1b1fb3eb199bf0f1d25db44955ae5a2053e578a77ff6b6fb655f06058" }, "downloads": -1, "filename": "safescope-0.2.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "21c15c462430e4fd7de12d1183a4f246", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.5", "size": 4568, "upload_time": "2019-07-16T08:28:08", "url": "https://files.pythonhosted.org/packages/1c/16/02d2dee5e76f02382c146cb110c5875281f2dd6020d237e2f4f184303d49/safescope-0.2.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "693836d392224e0dc31d6ea6b03726a6", "sha256": "022188a4a4b511d9d864cc868295e8a5fbf27162a904e574c97fab1915103707" }, "downloads": -1, "filename": "safescope-0.2.5.tar.gz", "has_sig": false, "md5_digest": "693836d392224e0dc31d6ea6b03726a6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 3458, "upload_time": "2019-07-16T08:28:09", "url": "https://files.pythonhosted.org/packages/27/a7/51576f79c42b47ca9f8ca8cfaae96f382b7c08097aec9c397f26d21aac64/safescope-0.2.5.tar.gz" } ], "0.2.6": [ { "comment_text": "", "digests": { "md5": "d3736566e4e719e7b5c027a617198f2f", "sha256": "3726599d268e9f9cbc48ca31fd35a0b73fe26598e2cc93347fe221f67f9c3669" }, "downloads": -1, "filename": "safescope-0.2.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d3736566e4e719e7b5c027a617198f2f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.5", "size": 4580, "upload_time": "2019-07-16T09:06:23", "url": "https://files.pythonhosted.org/packages/04/57/bf87f8204a4b21b79e8cfc7c7bb7eedbc475d2c5d4937102dd3519ebf734/safescope-0.2.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8c738b307442f104d595faa661414bca", "sha256": "55e09e7068182746e3de4f127ea6bf25bd1205ff8db0baaafe0d9bb17b6d3e3c" }, "downloads": -1, "filename": "safescope-0.2.6.tar.gz", "has_sig": false, "md5_digest": "8c738b307442f104d595faa661414bca", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 4251, "upload_time": "2019-07-16T09:06:24", "url": "https://files.pythonhosted.org/packages/e2/b2/84cb268f62e8c9a04d060bc0ec51178e131245ebc2d37658fb8078b8bfaf/safescope-0.2.6.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d3736566e4e719e7b5c027a617198f2f", "sha256": "3726599d268e9f9cbc48ca31fd35a0b73fe26598e2cc93347fe221f67f9c3669" }, "downloads": -1, "filename": "safescope-0.2.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d3736566e4e719e7b5c027a617198f2f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.5", "size": 4580, "upload_time": "2019-07-16T09:06:23", "url": "https://files.pythonhosted.org/packages/04/57/bf87f8204a4b21b79e8cfc7c7bb7eedbc475d2c5d4937102dd3519ebf734/safescope-0.2.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8c738b307442f104d595faa661414bca", "sha256": "55e09e7068182746e3de4f127ea6bf25bd1205ff8db0baaafe0d9bb17b6d3e3c" }, "downloads": -1, "filename": "safescope-0.2.6.tar.gz", "has_sig": false, "md5_digest": "8c738b307442f104d595faa661414bca", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 4251, "upload_time": "2019-07-16T09:06:24", "url": "https://files.pythonhosted.org/packages/e2/b2/84cb268f62e8c9a04d060bc0ec51178e131245ebc2d37658fb8078b8bfaf/safescope-0.2.6.tar.gz" } ] }