Skip to content

havakv/safescope

Repository files navigation

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

About

Prevent access to global variables in functions

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages