diff --git a/docs/contributing.rst b/docs/contributing.rst new file mode 100644 index 0000000..ec1a4a7 --- /dev/null +++ b/docs/contributing.rst @@ -0,0 +1,67 @@ +.. _contributing: + +============== + Contributing +============== + +To work on this library locally, first checkout the code. Then create a new virtual environment:: + + git clone git@github.com:simonw/sqlite-utils + cd sqlite-utils + python3 -mvenv venv + source venv/bin/activate + +Or if you are using ``pipenv``:: + + pipenv shell + +Within the virtual environment running ``sqlite-utils`` should run your locally editable version of the tool. You can use ``which sqlite-utils`` to confirm that you are running the version that lives in your virtual environment. + +.. _contributing_tests: + +Running the tests +================= + +To install the dependencies and test dependencies:: + + pip install -e '.[test]' + +To run the tests:: + + pytest + +.. _contributing_docs: + +Building the documentation +========================== + +To build the documentation, first install the documentation dependencies:: + + pip install -e '.[docs]' + +Then run ``make livehtml`` from the ``docs/`` directory to start a server on port 8000 that will serve the documentation and live-reload any time you make an edit to a ``.rst`` file:: + + cd docs + make livehtml + +.. _contributing_linting: + +Linting and formatting +====================== + +``sqlite-utils`` uses `Black `__ for code formatting, and `flake8 `__ and `mypy `__ for linting and type checking. + +Black is installed as part of ``pip install -e '.[test]'`` - you can then format your code by running it in the root of the project:: + + black . + +To install ``mypy`` and ``flake8`` run the following:: + + pip install -e '.[flake8,mypy]' + +Both commands can then be run in the root of the project like this:: + + flake8 + mypy sqlite_utils + +All three of these tools are run by our CI mechanism against every commit and pull request. diff --git a/docs/index.rst b/docs/index.rst index b1bfc0e..93b0bc0 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -32,6 +32,7 @@ Contents installation cli python-api + contributing changelog Take a look at `this script `_ for an example of this library in action.