Skip to main content

Dysco provides configurable dynamic scoping behavior in Python.

Project description


Dysco - Dynamic Scoping in Python Tweet Share on Facebook Share on Reddit Share on Hacker News

Build Status Coverage License PyPI Version

Installation | Development | Contributing

Dysco is a lightweight Python library that brings dynamic scoping capabilities to Python in a highly configurable way.


Dysco can be installed from pypy using pip or any compatible Python package manager.

# Installation with pip.
pip install dysco

# Or, installation with poetry.
poetry add dysco


To install the dependencies locally, you need poetry to be installed. You can then run

# This is only required if you're not using poetry v1.0.0 or greater.
# It tells poetry to place the virtual environment in `.venv`.
poetry config true

# Install all of the dependencies.
poetry install

to install the project dependencies.

The library is tested against Python versions 3.7 and 3.8. These are most easily installed using pyenv with the following command.

# Install the supported Python versions.
pyenv install --skip-existing 3.7.5
pyenv install --skip-existing 3.8.0

Testing, linting, and document generation can then be run via tox. The bare tox command will run everything in all environments, or you can break it down by Python version and task. For example, you could run the individual Python 3.8 tasks manually by running the following.

# Install the project dependencies in `.tox/py38/`.
tox -e py38-init

# Run black, flake8, isort, and mypy.
tox -e py38-lint

# Run the tests and generate a coverage report.
tox -e py38-test --coverage

## Build the project documentation.
tox -e py38-docs


You first need to configure your credentials with poetry.

poetry config http-basic.pypi intoli <pypi-password>

You can then use invoke to bump the version number, commit the changes, tag the version, and deploy to pypi.

# Bumps the patch version and deploys the package.
# Valid options are major, minor, and patch.
invoke bump patch


Contributions are welcome, but please follow these contributor guidelines outlined in


Exodus is licensed under a BSD 2-Clause License and is copyright Intoli, LLC.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for dysco, version 0.0.8
Filename, size File type Python version Upload date Hashes
Filename, size dysco-0.0.8-py3-none-any.whl (7.3 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size dysco-0.0.8.tar.gz (6.5 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page