Files
catalyst/development-guidelines.html
T
2017-10-19 15:49:01 -06:00

550 lines
35 KiB
HTML

<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Development Guidelines &mdash; Catalyst 0.3 documentation</title>
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="top" title="Catalyst 0.3 documentation" href="index.html"/>
<link rel="next" title="API Reference" href="appendix.html"/>
<link rel="prev" title="Data Bundles" href="bundles.html"/>
<script src="_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-nav-search">
<a href="index.html" class="icon icon-home"> Catalyst
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="install.html">Install</a><ul>
<li class="toctree-l2"><a class="reference internal" href="install.html#installing-with-pip">Installing with <code class="docutils literal"><span class="pre">pip</span></code></a><ul>
<li class="toctree-l3"><a class="reference internal" href="install.html#gnu-linux">GNU/Linux</a></li>
<li class="toctree-l3"><a class="reference internal" href="install.html#osx">OSX</a></li>
<li class="toctree-l3"><a class="reference internal" href="install.html#windows">Windows</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="install.html#installing-with-conda">Installing with <code class="docutils literal"><span class="pre">conda</span></code></a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="beginner-tutorial.html">Zipline Beginner Tutorial</a><ul>
<li class="toctree-l2"><a class="reference internal" href="beginner-tutorial.html#basics">Basics</a></li>
<li class="toctree-l2"><a class="reference internal" href="beginner-tutorial.html#my-first-algorithm">My first algorithm</a></li>
<li class="toctree-l2"><a class="reference internal" href="beginner-tutorial.html#running-the-algorithm">Running the algorithm</a><ul>
<li class="toctree-l3"><a class="reference internal" href="beginner-tutorial.html#ingesting-data">Ingesting Data</a></li>
<li class="toctree-l3"><a class="reference internal" href="beginner-tutorial.html#command-line-interface">Command line interface</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="beginner-tutorial.html#ipython-notebook">IPython Notebook</a></li>
<li class="toctree-l2"><a class="reference internal" href="beginner-tutorial.html#access-to-previous-prices-using-history">Access to previous prices using <code class="docutils literal"><span class="pre">history</span></code></a><ul>
<li class="toctree-l3"><a class="reference internal" href="beginner-tutorial.html#working-example-dual-moving-average-cross-over">Working example: Dual Moving Average Cross-Over</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="beginner-tutorial.html#conclusions">Conclusions</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="bundles.html">Data Bundles</a><ul>
<li class="toctree-l2"><a class="reference internal" href="bundles.html#discovering-available-bundles">Discovering Available Bundles</a></li>
<li class="toctree-l2"><a class="reference internal" href="bundles.html#ingesting-data">Ingesting Data</a></li>
<li class="toctree-l2"><a class="reference internal" href="bundles.html#old-data">Old Data</a></li>
<li class="toctree-l2"><a class="reference internal" href="bundles.html#running-backtests-with-data-bundles">Running Backtests with Data Bundles</a></li>
<li class="toctree-l2"><a class="reference internal" href="bundles.html#default-data-bundles">Default Data Bundles</a><ul>
<li class="toctree-l3"><a class="reference internal" href="bundles.html#quandl-wiki-bundle">Quandl WIKI Bundle</a><ul>
<li class="toctree-l4"><a class="reference internal" href="bundles.html#quantopian-quandl-wiki-mirror">Quantopian Quandl WIKI Mirror</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="bundles.html#yahoo-bundle-factories">Yahoo Bundle Factories</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="bundles.html#writing-a-new-bundle">Writing a New Bundle</a><ul>
<li class="toctree-l3"><a class="reference internal" href="bundles.html#environ"><code class="docutils literal"><span class="pre">environ</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="bundles.html#asset-db-writer"><code class="docutils literal"><span class="pre">asset_db_writer</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="bundles.html#minute-bar-writer"><code class="docutils literal"><span class="pre">minute_bar_writer</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="bundles.html#daily-bar-writer"><code class="docutils literal"><span class="pre">daily_bar_writer</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="bundles.html#adjustment-writer"><code class="docutils literal"><span class="pre">adjustment_writer</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="bundles.html#calendar"><code class="docutils literal"><span class="pre">calendar</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="bundles.html#start-session"><code class="docutils literal"><span class="pre">start_session</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="bundles.html#end-session"><code class="docutils literal"><span class="pre">end_session</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="bundles.html#cache"><code class="docutils literal"><span class="pre">cache</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="bundles.html#show-progress"><code class="docutils literal"><span class="pre">show_progress</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="bundles.html#output-dir"><code class="docutils literal"><span class="pre">output_dir</span></code></a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1 current"><a class="current reference internal" href="">Development Guidelines</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#creating-a-development-environment">Creating a Development Environment</a></li>
<li class="toctree-l2"><a class="reference internal" href="#development-with-docker">Development with Docker</a></li>
<li class="toctree-l2"><a class="reference internal" href="#style-guide-running-tests">Style Guide &amp; Running Tests</a></li>
<li class="toctree-l2"><a class="reference internal" href="#continuous-integration">Continuous Integration</a></li>
<li class="toctree-l2"><a class="reference internal" href="#packaging">Packaging</a></li>
<li class="toctree-l2"><a class="reference internal" href="#contributing-to-the-docs">Contributing to the Docs</a></li>
<li class="toctree-l2"><a class="reference internal" href="#commit-messages">Commit messages</a></li>
<li class="toctree-l2"><a class="reference internal" href="#formatting-docstrings">Formatting Docstrings</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="appendix.html">API Reference</a><ul>
<li class="toctree-l2"><a class="reference internal" href="appendix.html#running-a-backtest">Running a Backtest</a></li>
<li class="toctree-l2"><a class="reference internal" href="appendix.html#algorithm-api">Algorithm API</a><ul>
<li class="toctree-l3"><a class="reference internal" href="appendix.html#data-object">Data Object</a></li>
<li class="toctree-l3"><a class="reference internal" href="appendix.html#scheduling-functions">Scheduling Functions</a></li>
<li class="toctree-l3"><a class="reference internal" href="appendix.html#orders">Orders</a><ul>
<li class="toctree-l4"><a class="reference internal" href="appendix.html#order-cancellation-policies">Order Cancellation Policies</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="appendix.html#assets">Assets</a></li>
<li class="toctree-l3"><a class="reference internal" href="appendix.html#trading-controls">Trading Controls</a></li>
<li class="toctree-l3"><a class="reference internal" href="appendix.html#simulation-parameters">Simulation Parameters</a><ul>
<li class="toctree-l4"><a class="reference internal" href="appendix.html#commission-models">Commission Models</a></li>
<li class="toctree-l4"><a class="reference internal" href="appendix.html#slippage-models">Slippage Models</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="appendix.html#pipeline">Pipeline</a></li>
<li class="toctree-l3"><a class="reference internal" href="appendix.html#miscellaneous">Miscellaneous</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="appendix.html#pipeline-api">Pipeline API</a><ul>
<li class="toctree-l3"><a class="reference internal" href="appendix.html#built-in-factors">Built-in Factors</a></li>
<li class="toctree-l3"><a class="reference internal" href="appendix.html#pipeline-engine">Pipeline Engine</a></li>
<li class="toctree-l3"><a class="reference internal" href="appendix.html#data-loaders">Data Loaders</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="appendix.html#asset-metadata">Asset Metadata</a></li>
<li class="toctree-l2"><a class="reference internal" href="appendix.html#trading-calendar-api">Trading Calendar API</a></li>
<li class="toctree-l2"><a class="reference internal" href="appendix.html#data-api">Data API</a><ul>
<li class="toctree-l3"><a class="reference internal" href="appendix.html#writers">Writers</a></li>
<li class="toctree-l3"><a class="reference internal" href="appendix.html#readers">Readers</a></li>
<li class="toctree-l3"><a class="reference internal" href="appendix.html#bundles">Bundles</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="appendix.html#utilities">Utilities</a><ul>
<li class="toctree-l3"><a class="reference internal" href="appendix.html#caching">Caching</a></li>
<li class="toctree-l3"><a class="reference internal" href="appendix.html#command-line">Command Line</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="release-process.html">Release Process</a><ul>
<li class="toctree-l2"><a class="reference internal" href="release-process.html#updating-the-release-notes">Updating the Release Notes</a></li>
<li class="toctree-l2"><a class="reference internal" href="release-process.html#updating-the-python-stub-files">Updating the Python stub files</a></li>
<li class="toctree-l2"><a class="reference internal" href="release-process.html#updating-the-version">Updating the <code class="docutils literal"><span class="pre">__version__</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="release-process.html#uploading-pypi-packages">Uploading PyPI packages</a><ul>
<li class="toctree-l3"><a class="reference internal" href="release-process.html#sdist"><code class="docutils literal"><span class="pre">sdist</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="release-process.html#bdist"><code class="docutils literal"><span class="pre">bdist</span></code></a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="release-process.html#documentation">Documentation</a></li>
<li class="toctree-l2"><a class="reference internal" href="release-process.html#uploading-conda-packages">Uploading conda packages</a></li>
<li class="toctree-l2"><a class="reference internal" href="release-process.html#next-commit">Next Commit</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="releases.html">Release Notes</a><ul>
<li class="toctree-l2"><a class="reference internal" href="releases.html#development">Development</a><ul>
<li class="toctree-l3"><a class="reference internal" href="releases.html#highlights">Highlights</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#enhancements">Enhancements</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#experimental-features">Experimental Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#bug-fixes">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#performance">Performance</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#maintenance-and-refactorings">Maintenance and Refactorings</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#build">Build</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#documentation">Documentation</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#miscellaneous">Miscellaneous</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="releases.html#release-1-1-0">Release 1.1.0</a><ul>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id1">Enhancements</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id2">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id3">Performance</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id4">Maintenance and Refactorings</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id5">Build</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id6">Documentation</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id7">Miscellaneous</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="releases.html#release-1-0-2">Release 1.0.2</a><ul>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id8">Enhancements</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#experimental">Experimental</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id9">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id10">Performance</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id11">Maintenance and Refactorings</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id12">Documentation</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#testing">Testing</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#data-format-changes">Data Format Changes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="releases.html#release-1-0-1">Release 1.0.1</a><ul>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id13">Enhancements</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id14">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id15">Documentation</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="releases.html#release-1-0-0">Release 1.0.0</a><ul>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id16">Highlights</a><ul>
<li class="toctree-l4"><a class="reference internal" href="releases.html#zipline-1-0-rewrite-1105">Zipline 1.0 Rewrite (#1105)</a></li>
<li class="toctree-l4"><a class="reference internal" href="releases.html#new-entry-points-1173-and-1178">New Entry Points (#1173 and #1178)</a></li>
<li class="toctree-l4"><a class="reference internal" href="releases.html#data-bundles-1173-and-1178">Data Bundles (#1173 and #1178)</a></li>
<li class="toctree-l4"><a class="reference internal" href="releases.html#string-support-in-pipeline-1174">String Support in Pipeline (#1174)</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id17">Enhancements</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id18">Experimental Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id19">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id20">Performance</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id21">Maintenance and Refactorings</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id22">Build</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id23">Documentation</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id24">Miscellaneous</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="releases.html#release-0-9-0">Release 0.9.0</a><ul>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id25">Highlights</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id26">Enhancements</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id27">Experimental Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id28">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id29">Performance</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id30">Maintenance and Refactorings</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id31">Build</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id32">Documentation</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id33">Miscellaneous</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="releases.html#release-0-8-4">Release 0.8.4</a><ul>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id34">Highlights</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id35">Enhancements</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id36">Experimental Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id37">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id38">Performance</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id39">Maintenance and Refactorings</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id40">Build</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id41">Documentation</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id42">Miscellaneous</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="releases.html#release-0-8-3">Release 0.8.3</a></li>
<li class="toctree-l2"><a class="reference internal" href="releases.html#release-0-8-0">Release 0.8.0</a><ul>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id43">Highlights</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id44">Enhancements</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id45">Experimental Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id46">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id47">Performance</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id48">Maintenance and Refactorings</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id49">Build</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id50">Documentation</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="releases.html#release-0-7-0">Release 0.7.0</a><ul>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id51">Highlights</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id52">Enhancements</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id53">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id54">Performance</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id55">Maintenance and Refactorings</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id56">Build</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#contributors">Contributors</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="releases.html#release-0-6-1">Release 0.6.1</a><ul>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id57">Highlights</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id58">Enhancements</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id59">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id60">Performance</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id61">Maintenance and Refactorings</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id62">Build</a></li>
<li class="toctree-l3"><a class="reference internal" href="releases.html#id63">Contributors</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
&nbsp;
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">Catalyst</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html">Docs</a> &raquo;</li>
<li>Development Guidelines</li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/development-guidelines.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document">
<div class="section" id="development-guidelines">
<h1>Development Guidelines<a class="headerlink" href="#development-guidelines" title="Permalink to this headline"></a></h1>
<p>This page is intended for developers of Zipline, people who want to contribute to the Zipline codebase or documentation, or people who want to install from source and make local changes to their copy of Zipline.</p>
<p>All contributions, bug reports, bug fixes, documentation improvements, enhancements and ideas are welcome. We <a class="reference external" href="https://github.com/quantopian/zipline/issues">track issues</a> on <a class="reference external" href="https://github.com/">GitHub</a> and also have a <a class="reference external" href="https://groups.google.com/forum/#!forum/zipline">mailing list</a> where you can ask questions.</p>
<div class="section" id="creating-a-development-environment">
<h2>Creating a Development Environment<a class="headerlink" href="#creating-a-development-environment" title="Permalink to this headline"></a></h2>
<p>First, you&#8217;ll need to clone Zipline by running:</p>
<div class="highlight-bash"><div class="highlight"><pre><span class="nv">$ </span>git clone git@github.com:your-github-username/zipline.git
</pre></div>
</div>
<p>Then check out to a new branch where you can make your changes:</p>
<div class="highlight-bash"><div class="highlight"><pre><span class="nv">$ </span>git checkout -b some-short-descriptive-name
</pre></div>
</div>
<p>If you don&#8217;t already have them, you&#8217;ll need some C library dependencies. You can follow the <a class="reference external" href="install.html">install guide</a> to get the appropriate dependencies.</p>
<p>The following section assumes you already have virtualenvwrapper and pip installed on your system. Suggested installation of Python library dependencies used for development:</p>
<div class="highlight-bash"><div class="highlight"><pre><span class="nv">$ </span>mkvirtualenv zipline
<span class="nv">$ </span>./etc/ordered_pip.sh ./etc/requirements.txt
<span class="nv">$ </span>pip install -r ./etc/requirements_dev.txt
<span class="nv">$ </span>pip install -r ./etc/requirements_blaze.txt
</pre></div>
</div>
<p>Finally, you can build the C extensions by running:</p>
<div class="highlight-bash"><div class="highlight"><pre><span class="nv">$ </span>python setup.py build_ext --inplace
</pre></div>
</div>
<p>To finish, make sure <a class="reference external" href="#style-guide-running-tests">tests</a> pass.</p>
<p>If you get an error running nosetests after setting up a fresh virtualenv, please try running</p>
<div class="highlight-bash"><div class="highlight"><pre><span class="c"># where zipline is the name of your virtualenv</span>
<span class="nv">$ </span>deactivate zipline
<span class="nv">$ </span>workon zipline
</pre></div>
</div>
</div>
<div class="section" id="development-with-docker">
<h2>Development with Docker<a class="headerlink" href="#development-with-docker" title="Permalink to this headline"></a></h2>
<p>If you want to work with zipline using a <a class="reference external" href="https://docs.docker.com/get-started/">Docker</a> container, you&#8217;ll need to build the <code class="docutils literal"><span class="pre">Dockerfile</span></code> in the Zipline root directory, and then build <code class="docutils literal"><span class="pre">Dockerfile-dev</span></code>. Instructions for building both containers can be found in <code class="docutils literal"><span class="pre">Dockerfile</span></code> and <code class="docutils literal"><span class="pre">Dockerfile-dev</span></code>, respectively.</p>
</div>
<div class="section" id="style-guide-running-tests">
<h2>Style Guide &amp; Running Tests<a class="headerlink" href="#style-guide-running-tests" title="Permalink to this headline"></a></h2>
<p>We use <a class="reference external" href="http://flake8.pycqa.org/en/latest/">flake8</a> for checking style requirements and <a class="reference external" href="http://nose.readthedocs.io/en/latest/">nosetests</a> to run Zipline tests. Our <a class="reference external" href="https://en.wikipedia.org/wiki/Continuous_integration">continuous integration</a> tools will run these commands.</p>
<p>Before submitting patches or pull requests, please ensure that your changes pass when running:</p>
<div class="highlight-bash"><div class="highlight"><pre><span class="nv">$ </span>flake8 zipline tests
</pre></div>
</div>
<p>In order to run tests locally, you&#8217;ll need <a class="reference external" href="https://mrjbq7.github.io/ta-lib/install.html">TA-lib</a>, which you can install on Linux by running:</p>
<div class="highlight-bash"><div class="highlight"><pre><span class="nv">$ </span>wget http://prdownloads.sourceforge.net/ta-lib/ta-lib-0.4.0-src.tar.gz
<span class="nv">$ </span>tar -xvzf ta-lib-0.4.0-src.tar.gz
<span class="nv">$ </span><span class="nb">cd </span>ta-lib/
<span class="nv">$ </span>./configure --prefix<span class="o">=</span>/usr
<span class="nv">$ </span>make
<span class="nv">$ </span>sudo make install
</pre></div>
</div>
<p>And for <code class="docutils literal"><span class="pre">TA-lib</span></code> on OS X you can just run:</p>
<div class="highlight-bash"><div class="highlight"><pre><span class="nv">$ </span>brew install ta-lib
</pre></div>
</div>
<p>Then run <code class="docutils literal"><span class="pre">pip</span> <span class="pre">install</span></code> TA-lib:</p>
<div class="highlight-bash"><div class="highlight"><pre><span class="nv">$ </span>pip install -r ./etc/requirements_talib.txt
</pre></div>
</div>
<p>You should now be free to run tests:</p>
<div class="highlight-bash"><div class="highlight"><pre><span class="nv">$ </span>nosetests
</pre></div>
</div>
</div>
<div class="section" id="continuous-integration">
<h2>Continuous Integration<a class="headerlink" href="#continuous-integration" title="Permalink to this headline"></a></h2>
<p>We use <a class="reference external" href="https://travis-ci.org/quantopian/zipline">Travis CI</a> for Linux-64 bit builds and <a class="reference external" href="https://ci.appveyor.com/project/quantopian/zipline">AppVeyor</a> for Windows-64 bit builds.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">We do not currently have CI for OSX-64 bit builds. 32-bit builds may work but are not included in our integration tests.</p>
</div>
</div>
<div class="section" id="packaging">
<h2>Packaging<a class="headerlink" href="#packaging" title="Permalink to this headline"></a></h2>
<p>To learn about how we build Zipline conda packages, you can read <a class="reference external" href="release-process.html#uploading-conda-packages">this</a> section in our release process notes.</p>
</div>
<div class="section" id="contributing-to-the-docs">
<h2>Contributing to the Docs<a class="headerlink" href="#contributing-to-the-docs" title="Permalink to this headline"></a></h2>
<p>If you&#8217;d like to contribute to the documentation on zipline.io, you can navigate to <code class="docutils literal"><span class="pre">docs/source/</span></code> where each <a class="reference external" href="https://en.wikipedia.org/wiki/ReStructuredText">reStructuredText</a> (<code class="docutils literal"><span class="pre">.rst</span></code>) file is a separate section there. To add a section, create a new file called <code class="docutils literal"><span class="pre">some-descriptive-name.rst</span></code> and add <code class="docutils literal"><span class="pre">some-descriptive-name</span></code> to <code class="docutils literal"><span class="pre">appendix.rst</span></code>. To edit a section, simply open up one of the existing files, make your changes, and save them.</p>
<p>We use <a class="reference external" href="http://www.sphinx-doc.org/en/stable/">Sphinx</a> to generate documentation for Zipline, which you will need to install by running:</p>
<div class="highlight-bash"><div class="highlight"><pre><span class="nv">$ </span>pip install -r ./etc/requirements_docs.txt
</pre></div>
</div>
<p>To build and view the docs locally, run:</p>
<div class="highlight-bash"><div class="highlight"><pre><span class="c"># assuming you&#39;re in the Zipline root directory</span>
<span class="nv">$ </span><span class="nb">cd </span>docs
<span class="nv">$ </span>make html
<span class="nv">$ </span><span class="o">{</span>BROWSER<span class="o">}</span> build/html/index.html
</pre></div>
</div>
</div>
<div class="section" id="commit-messages">
<h2>Commit messages<a class="headerlink" href="#commit-messages" title="Permalink to this headline"></a></h2>
<p>Standard prefixes to start a commit message:</p>
<div class="highlight-text"><div class="highlight"><pre>BLD: change related to building Zipline
BUG: bug fix
DEP: deprecate something, or remove a deprecated object
DEV: development tool or utility
DOC: documentation
ENH: enhancement
MAINT: maintenance commit (refactoring, typos, etc)
REV: revert an earlier commit
STY: style fix (whitespace, PEP8, flake8, etc)
TST: addition or modification of tests
REL: related to releasing Zipline
PERF: performance enhancements
</pre></div>
</div>
<p>Some commit style guidelines:</p>
<p>Commit lines should be no longer than <a class="reference external" href="https://git-scm.com/book/en/v2/Distributed-Git-Contributing-to-a-Project">72 characters</a>. The first line of the commit should include one of the above prefixes. There should be an empty line between the commit subject and the body of the commit. In general, the message should be in the imperative tense. Best practice is to include not only what the change is, but why the change was made.</p>
<p><strong>Example:</strong></p>
<div class="highlight-text"><div class="highlight"><pre>MAINT: Remove unused calculations of max_leverage, et al.
In the performance period the max_leverage, max_capital_used,
cumulative_capital_used were calculated but not used.
At least one of those calculations, max_leverage, was causing a
divide by zero error.
Instead of papering over that error, the entire calculation was
a bit suspect so removing, with possibility of adding it back in
later with handling the case (or raising appropriate errors) when
the algorithm has little cash on hand.
</pre></div>
</div>
</div>
<div class="section" id="formatting-docstrings">
<h2>Formatting Docstrings<a class="headerlink" href="#formatting-docstrings" title="Permalink to this headline"></a></h2>
<p>When adding or editing docstrings for classes, functions, etc, we use <a class="reference external" href="https://github.com/numpy/numpy/blob/master/doc/HOWTO_DOCUMENT.rst.txt">numpy</a> as the canonical reference.</p>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="appendix.html" class="btn btn-neutral float-right" title="API Reference" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a>
<a href="bundles.html" class="btn btn-neutral" title="Data Bundles" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2017, Enigma MPC, Inc..
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'./',
VERSION:'0.3',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.StickyNav.enable();
});
</script>
</body>
</html>