# Basic toplevel package includes
include BuildStream.doap
include COPYING
include CONTRIBUTING.rst
include MAINTAINERS
include NEWS
include README.rst

# Documentation package includes
include doc/Makefile
include doc/badges.py
include doc/bst2html.py
include doc/source/conf.py
include doc/source/plugin.rsttemplate
recursive-include doc/source *.rst
recursive-include doc/source *.py
recursive-include doc/source *.in
recursive-include doc/source *.html
recursive-include doc/source *.odg
recursive-include doc/source *.svg
recursive-include doc/examples *
recursive-include doc/sessions *.run

# Tests
recursive-include tests *
include conftest.py
include .coveragerc
include .pylintrc

# Protocol Buffers
recursive-include buildstream/_protos *.proto

# Requirements files
include dev-requirements.txt

# Versioneer
include versioneer.py
