Developer Workflow

This page describes how to install and improve the development version of Blaze.

If this documentation isn’t sufficiently clear or if you have other questions then please email blaze-dev@continuum.io.

Installing Development Blaze

Blaze depends on many other projects, both projects that develop alongside blaze (like odo) as well a number of community projects (like pandas).

Blaze development happens in the following projects, all of which are available on github.com/blaze/project-name

Bleeding edge binaries are kept up-to-date on the blaze conda channel. New developers likely only need to interact with one or two of these libraries so we recommend downloading everything by the conda channel and then only cloning those git repositories that you actively need:

conda install -c blaze blaze  # install everything from dev channel
git clone git://github.com/blaze/blaze.git  # only clone blaze and odo
git clone git://github.com/blaze/odo.git  # only clone blaze and odo

GitHub Flow

Source code and issue management are hosted in this github page, and usage of git roughly follows GitHub Flow. What this means is that the master branch is generally expected to be stable, with tests passing on all platforms, and features are developed in descriptively named feature branches and merged via github’s Pull Requests.

Coding Standards

Unified Python 2 and 3 Codebase:

Blaze source code simultaneously supports both Python 2 and Python 3 with a single codebase.

To support this, all .py files must begin with a few __future__ imports, as follows.:

from __future__ import absolute_import, division, print_function

Testing:

In order to keep the master branch functioning with passing tests, there are two automated testing mechanisms being used. First is Travis CI, which is configured to automatically build any pull requests that are made. This provides a smoke test against both Python 2 and Python 3 before a merge.

The Travis tests only run on Linux, but Blaze is supported on Linux, OS X, and Windows. Further tests and bleeding-edge builds are carried out using Anaconda build which tests and builds Blaze on the following platforms/versions

  • Python versions 2.6, 2.7, 3.3, 3.4
  • Operating systems Windows, OS-X, Linux
  • 32-bit and 64-bit

Relative Imports:

To avoid the side effects of top level imports, e.g. import blaze, all internal code should be imported relatively. Thus:

#file: blaze/objects/table.py
from blaze import Array

should be:

#file: blaze/objects/table.py
from .array import Array

For cross submodule imports, import from the module api. For example:

#file: blaze/objects/table.py
from ..io import printing

Relation with Continuum

Blaze is developed in part by Continuum Analytics, a for profit company. Continuum’s efforts on Blaze are open source and freely available to the public. The open nature of Blaze is protected by a BSD license.