Repository navigation
Three additions. Nothing that v0.1.0 printed, hashed, probed or installed
changes: every v0.1.0 test passes unchanged, the probe set and its grids are
the same, and parity without --lock prints byte-identical output.
frames.shared_hash(a, b, drop)andframes.shared_columns. A release
that adds an output column cannot be checked by hashing the whole frame
against the build before it. economicspace once reported four cells as
different on a configuration identical on 142 of 142 shared columns.
shared_hashhashes both frames over the columns both carry, in A's order,
and returns the column list so the set can be named.column_diffnow takes
its shared set fromshared_columns, with the same result.provenance, moved from economicspace'sverify.py:git_state(repo, paths)gives the commit, the branch, and the tracked
files underpathswhose content differs from HEAD (git diff, never
git status).environment(packages)gives the interpreter, system, machine, host and
each package's version.- "Could not tell" is
Noneand never reads as clean. - A module already imported reports its own
__version__; otherwise
importlib.metadataanswers without importing the package.
parity --lock FILE(repeatable) compares each installed distribution
with itsname==versionpin.- Names are normalised as PEP 503 does, and versions are compared as exact
strings. - Every other line (a range, a URL,
-r, an environment marker) is printed
NOT CHECKEDand fails the lock check. - The exit code is the probes' when they did not all match, else the lock's.
- The lock is checked even when the reference is missing (exit 2).
--lockwith--recordis an argument error.
- Names are normalised as PEP 503 does, and versions are compared as exact
Proved: 22 new tests, 90 in all. Twelve defects were planted in a copy (whole B
hashed, provenance kept, B's own order, git status for dirty, no git read as
clean, metadata ignoring the imported module, unreadable lock lines dropped or
passed, names not normalised, tab comments, the lock skipped without a
reference, the lock's exit code ignored), and each failed its test, as do v0.1.0's 16.
Also in this release, documentation only:
- README: a Develop section (running the tests, what they need, how a release
is made), a Licence section, and the--no-config/--require-config
flags ofhooks. - Docstrings in
tree,framesandparitysay plainly what they said with
filler, and a few paragraphs broken by the move out of economicspace are
rewrapped. pyproject.toml: a plainer description, two keywords, Changelog and Issues
links.