#
# Use .add_data_files and .add_data_dir methods in a appropriate
# setup.py files to include non-python files such as documentation,
# data, etc files to distribution (*for installation*).
# Avoid using MANIFEST.in for that.
#
include MANIFEST.in
include pytest.ini
include *.txt
include README.md
include site.cfg.example
recursive-include numpy/random *.pyx *.pxd *.pyx.in *.pxd.in
# Add build support that should go in sdist, but not go in bdist/be installed
# Note that sub-directories that don't have __init__ are apparently not
# included by 'recursive-include', so list those separately
recursive-include numpy *
recursive-include numpy/_build_utils *
recursive-include numpy/linalg/lapack_lite *
include runtests.py
include tox.ini pytest.ini .coveragerc
recursive-include tools *
# Add sdist files whose use depends on local configuration.
include numpy/core/src/common/cblasfuncs.c
include numpy/core/src/common/python_xerbla.c
# Adding build related files not found by distutils
recursive-include numpy/core/code_generators *.py *.txt
recursive-include numpy/core *.in *.h
# Add documentation and benchmarks: we don't use add_data_dir since we do not
# want to include this at installation, only for sdist-generated tarballs
# Docs:
recursive-include doc *
prune doc/build
prune doc/source/generated
# Benchmarks:
recursive-include benchmarks *
prune benchmarks/env
prune benchmarks/results
prune benchmarks/html
prune benchmarks/numpy
# Exclude generated files
prune */__pycache__
global-exclude *.pyc *.pyo *.pyd *.swp *.bak *~
# Exclude license file that we append to the main license when running
# `python setup.py sdist`
exclude LICENSES_bundled.txt
