# some of the prunes here are so that check-manifest doesn't complain about their exclusion
# as such, be judicious in your use of prune

# stubs
prune mypy/typeshed
include mypy/typeshed/LICENSE
include mypy/typeshed/stdlib/VERSIONS
recursive-include mypy/typeshed *.pyi

# mypy and mypyc
include mypy/py.typed
recursive-include mypy *.py
recursive-include mypyc *.py

# random
include mypy_bootstrap.ini
graft mypy/xml
graft scripts

# docs
graft docs
prune docs/build
prune docs/source/_build

# assorted mypyc requirements
graft mypyc/external
graft mypyc/lib-rt
graft mypyc/test-data
graft mypyc/doc

# files necessary for testing sdist
include mypy-requirements.txt
include build-requirements.txt
include test-requirements.txt
include mypy_self_check.ini
prune misc
include misc/proper_plugin.py
graft test-data
include conftest.py
include runtests.py
include pytest.ini

include LICENSE mypyc/README.md
exclude .gitmodules CONTRIBUTING.md CREDITS ROADMAP.md tox.ini action.yml

global-exclude *.py[cod]
global-exclude .DS_Store
