Datasette is an open source project. We welcome contributions!
This document describes how to contribute to Datasette core. You can also contribute to the wider Datasette ecosystem by creating new Plugins.
Setting up a development environment¶
If you have Python 3.5 or higher installed on your computer (on OS X the easiest way to do this is using homebrew) you can install an editable copy of Datasette using the following steps.
If you want to use GitHub to publish your changes, first create a fork of datasette under your own GitHub account.
Now clone that repository somewhere on your computer:
git clone email@example.com:YOURNAME/datasette
If you just want to get started without creating your own fork, you can do this instead:
git clone firstname.lastname@example.org:simonw/datasette
The next step is to create a virtual environment for your project and use it to install Datasette’s dependencies:
cd datasette # Create a virtual environment in venv/ python3 -mvenv venv # Install Datasette and its testing dependencies pip install -e .[test]
That last line does most of the work:
pip install -e means “install this package in a way that allows me to edit the source code in place”. The
.[test] option means “use the setup.py in this directory and install the optional testing dependencies as well”.
Once you have done this, you can run the Datasette unit tests from inside your
datasette/ directory using pytest like so:
To run Datasette itself, just type
You’re going to need at least one SQLite database. An easy way to get started is to use the fixtures database that Datasette uses for its own tests.
You can create a copy of that database by running this command:
python tests/fixtures.py fixtures.db
Now you can run Datasette against the new fixtures database like so:
This will start a server at
Any changes you make in the
If you want to change Datasette’s Python code you can use the
--reload option to cause Datasette to automatically reload any time the underlying code changes:
datasette --reload fixtures.db
You can also use the
fixtures.py script to recreate the testing version of
metadata.json used by the unit tests. To do that:
python tests/fixtures.py fixtures.db fixtures-metadata.json
(You may need to delete
fixtures.db before running this command.)
Then run Datasette like this:
datasette fixtures.db -m fixtures-metadata.json