-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMANIFEST.in
More file actions
70 lines (67 loc) · 4.06 KB
/
Copy pathMANIFEST.in
File metadata and controls
70 lines (67 loc) · 4.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# What ships in the sdist beyond the package itself.
#
# The tests go in the sdist because a distribution packager builds from it and runs them.
# That only works if everything they need goes too: `tests/conftest.py` holds the fixtures
# every store test is parametrized over, and `ctrlrun.example.yaml` is asserted against by
# `test_the_shipped_example_policy_is_the_one_in_the_repository`. Shipping tests that cannot
# run is worse than shipping none, so `test_the_sdist_carries_everything_the_tests_need`
# keeps this file honest.
include ctrlrun.example.yaml
include CHANGELOG.md
include SECURITY.md
include VISION.md
# `docs/` is the six specifications and the two implementation ones: the implementer's
# contract, and the thing `# SPEC:` comments in `src/` cite. They ship.
#
# What used to be here as well -- the documentation site, the tools that render it, its
# capability source and its rendered fragments -- is `CTRLRun/ctrlrun-docs` now, and the
# lines that carried it are gone rather than repointed. An sdist cannot include a file from
# another repository, and `test_the_sdist_carries_everything_the_tests_read` is what would
# have caught a line left behind naming a path that no longer exists.
recursive-include docs *.md
# The README's header assets, and the sources they are rendered from. These stayed: the README
# is this repository's, and so is what it renders on PyPI.
recursive-include docs/assets *.svg *.png *.gif *.tape *.sh *.txt
# The three files the animation records, byte for byte the README's own runnable blocks;
# `tests/test_readme_assets.py` runs them and compares.
recursive-include docs/assets/recording *.yaml *.py
recursive-include tests *.py
# SPEC-v0.4 §4.3 — T115 validates `--junit` against a checked-in schema, and reads the README
# beside it for the schema's provenance and licence. A test that ships without its data is a
# test the sdist cannot run.
recursive-include tests *.xsd
recursive-include tests *.md
# `examples/` travels because T31 runs every script and loads every sector template out of
# the source tree (SPEC-v0.2 §1.1). Without these the sdist would ship a test suite that
# fails on a fresh checkout, which is the failure `prune internal` exists to avoid.
recursive-include examples *.py
recursive-include examples *.yaml
# The cookbook's verify recipe is a shell script; `tests/test_cookbook.py` runs it.
recursive-include examples *.sh
# And the READMEs. `examples/authority/` is two documents to *read*, so its README is the
# example rather than a note beside one — and a test asserts what it says, which is how the
# sdist job caught this line missing rather than the release did.
recursive-include examples *.md
# Local-only: working notes, and anything an operator's run left behind. Nothing here is
# picked up by default — these are belt and braces, so a stray file cannot ride along.
prune internal
prune .ctrlrun
prune .github
# SPEC-v0.5 §6.1 — an adapter is a separate distribution and ships from `adapters/` under its
# own version line. This line is **belt and braces like the three above it, not the thing that
# keeps adapters out**: `[tool.setuptools.packages.find]` looks only in `src/`, so nothing
# under `adapters/` is a package here and the sdist omits it whether or not this line exists.
# Removing it was mutation-tested and T136 stayed green.
#
# What T136 actually guards is the other direction — a `recursive-include adapters *.py` added
# later, which does put them in the sdist and does turn the test red. That is the failure worth
# a test, because `MANIFEST.in` resolves against the working tree rather than the index, which
# is how v0.2 shipped four files it should not have.
prune adapters
# `fuzz/` is a development tree like `research/`: the targets, their seed corpus and the
# invariants they assert. Belt and braces for the same reason the four lines above are --
# `[tool.setuptools.packages.find]` looks only in `src/`, so nothing here is a package and the
# sdist omits it either way. `test_the_fuzz_corpus_is_not_packaged` asserts the line, and
# `test_T181_*` asserts the outcome.
prune fuzz
global-exclude *.py[cod] .DS_Store