Python package for preventing use of variables from global scope.


Keywords
safescope, jupyter, python
License
BSD-3-Clause
Install
pip install safescope==0.2.6

Documentation

safescope

Build Status PyPI PyPI - Python Version Downloads License

safescope is a small python package useful for development in jupyter notebooks. The goal is to prevent functions from using global variables and instead raise a NameError. This is achieved by mimicking a module, and define all functions in that module (named side_scope).

Example

The 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.

In the example below, only foo(1) will execute, as bar(1) returns a NameError.

from safescope import safescope

x = 9

def foo(y):
    return x + y

@safescope
def bar(y):
    return x + y

foo(1) # Returns  10
bar(1) # Raise "NameError: name 'x' is not defined"

By using Imports, the imports are added to both the main scope and the side_scope, making them available for the functions decorated with @safescope.

from safescope import safescope, Imports

with Imports():
    import numpy as np

@safescope
def arange(n):
    return np.arange(n)

arange(4) # Returns array([0, 1, 2, 3])

Installation

safescope can either be installed from pypi with pip/pip3:

pip install safescope

or from github with:

pip install git+git://github.com/havakv/safescope.git

or from source by cloning the repo:

git clone https://github.com/havakv/safescope.git
cd safescope
python setup.py install