diff --git a/MANIFEST.in b/MANIFEST.in index 2633ac8..6621a96 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,12 +1,92 @@ -prune .github +# NOTE: based on a generic template in Scitools/.github/templates/MANIFEST.in + +# General principles +# - enable user to build locally, as well as in CI +# - make it ignore temporary files generated by dev processes, e.g. coverage checks +# - encode typical decisions, e.g. whether we package docs, requirements etc + +#--------- +# SECTION: main code sources +# +recursive-include src *.c *.py *.pyx *.so + # principles: + # - *no* "prune" command is used + # - use "include-recursive", by relevant file extensions + # hints: + # - top-level dir is typically "src", but maybe "lib" or + # - default package rules mean we generally don't actually *need* a statement + # - but it's better to be explicit + # - extension filetypes are typically sources (*.py) + # - might also need testdata files, e.g. *.nc, *.npy *.npz + # - also possibly non-python, e.g. *.pyx for Cython + +#--------- +# SECTION: requirements prune requirements recursive-include requirements *.txt -recursive-include src *.py *.pyx -include CITATION.cff + # principles: + # include just requirements-level info, not lock files + # hints: + # - not all projects include requirements, but they can be drawn in anyway by dynamic dependencies + # in the setuptools build process, linked via config in pyproject.toml + +#--------- +# SECTION: root files exclude .flake8 +exclude .git-blame-ignore-revs +exclude .git_archival.txt +exclude .gitattributes exclude .gitignore +exclude .lycheeignore +exclude .mailmap exclude .pre-commit-config.yaml -exclude Dockerfile +exclude .readthedocs.yml +exclude .ruff.toml +exclude CHANGES +include CITATION.cff +exclude CODE_OF_CONDUCT.md +include COPYING +include COPYING.LESSER +include LICENSE +exclude Makefile exclude codecov.yml +include noxfile.py + # principles: + # - *ANY* file in the root should be explicitly "include"- or "exclude"-d + # - EXCEPT (possibly) those covered by setuptools default rules (see above link) + # - including : README.md/.rst; pyproject.toml; setup.py/.cfg + # - N.B. a GHA "ci-manifest" check, if used, will check all this + # - the above are typical ones : given in sorted order + # - NB many will (eventually) be templated, but that is a separate issue + # - probably, this section can be included as *boilerplate* + # - i.e. it doesn't matter if some of the files mentioned don't exist + +#--------- +# SECTION: generic exclusions +# (1) top-level directories to omit entirely +prune .github +prune .nox +prune .tox +prune .coverage +prune docs +# (2) top-level files to omit +exclude .coveragerc +# (3) file types (path patterns) to skip everywhere +global-exclude *.py[cod] +global-exclude __pycache__ + # principles: + # - common directories, files and file-types to be generally ignored + # - all outside version control, temporary non-coding output and cache data + # produced by dev processes, automation or user tools + # - by having this section LAST, it can remove files which might have been added by + # previous sections -- such as python compiler cache files + # - can include this section as **boilerplate** : + # - won't all exist in every repo, but including them all does no harm + +# +#================================= +# Local Python-Stratify-specific settings +# +exclude Dockerfile exclude index.ipynb exclude summary.png