From 5940d78752104df84b55a83442f96ec50c9e0368 Mon Sep 17 00:00:00 2001 From: Henry Wright Date: Fri, 18 Jul 2025 11:29:38 +0100 Subject: [PATCH 1/2] allign manifest with template --- MANIFEST.in | 94 +++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 88 insertions(+), 6 deletions(-) diff --git a/MANIFEST.in b/MANIFEST.in index 7e35a60..121c79b 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,10 +1,92 @@ -prune .github -prune requirements +# A generic template for "MANIFEST.in" files in Scitools repos. +# NOTE: most of this can't be duplicated as-is into any given repo, but suggests +# guidelines + structure. +# For the syntax of "MANIFEST.in" files, see: +# https://setuptools.pypa.io/en/latest/userguide/miscellaneous.html#using-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 *.py *.pyx + # 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 + -include .git_archival.txt -include .gitattributes +#--------- +# SECTION: requirements +prune requirements +recursive-include requirements *.txt + # 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 + # - for some repos, the *.txt are actually lockfiles. This probably needs fixing. + + +#--------- +# 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 -include *.md -exclude pixi.lock \ No newline at end of file +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 +exclude pixi.lock + # 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 +# (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 From 2f102b1ccc5cf1cf2e269bf93bd26cdf2172bbde Mon Sep 17 00:00:00 2001 From: Henry Wright Date: Fri, 18 Jul 2025 15:16:05 +0100 Subject: [PATCH 2/2] Incorperate SciTools/.github#183 --- MANIFEST.in | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/MANIFEST.in b/MANIFEST.in index 121c79b..980693f 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -12,7 +12,7 @@ #--------- # SECTION: main code sources # -recursive-include src *.py *.pyx +recursive-include src *.c *.pp *.py *.pyx *.so # principles: # - *no* "prune" command is used # - use "include-recursive", by relevant file extensions @@ -34,7 +34,6 @@ recursive-include requirements *.txt # 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 - # - for some repos, the *.txt are actually lockfiles. This probably needs fixing. #--------- @@ -50,14 +49,18 @@ exclude .pre-commit-config.yaml exclude .readthedocs.yml exclude .ruff.toml exclude CHANGES +include CHANGELOG.md include CITATION.cff exclude CODE_OF_CONDUCT.md +exclude CONTRIBUTING.md include COPYING include COPYING.LESSER +include INSTALL include LICENSE exclude Makefile exclude codecov.yml include noxfile.py +include tox.ini exclude pixi.lock # principles: # - *ANY* file in the root should be explicitly "include"- or "exclude"-d @@ -77,6 +80,7 @@ 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