Releases: rusaitis/pypic
Release list
v0.1.3
Twenty-two commits of hardening since 0.1.2, driven by reading the project
the way a stranger would. Every change below was found by running the
documented commands rather than by a failing test — CI was green throughout.
Fixed
pypic validatecrashed on 2D data. It raisedTypeError: max_div_b() missing 1 required positional argument: 'd3'on any 2D dataset — the shape
of most BATSRUSz=0output, and of three committed fixtures. It now
reportsmax |div B|: skipped (needs a 3D grid)and completes.- The BATSRUS
.outread path was unreachable.available_fields()
dispatched to the wrong parser and a binary.outraised
UnicodeDecodeError; that path also skipped SI conversion and computed the
wrong grid spacing. OpenGGCM's stagger metadata was corrected alongside it. - The OpenGGCM quick-start did not run, and library code printed to
stdout. - Documented examples that raised when executed:
plane="xy"passed
where aPlaneSelectionis required, a three-value unpack of a two-tuple
return,Simulation.read(steps=...), and a"|u|"lookup for a quantity
that is not registered. - Wrong headline claims in the docs: PI step control was advertised for
the adaptive tracer (the shipped controller is error-norm),register_field()
was named as thecompute()extension point (it isregister_recipe()), and
theunknown_simulationerror kind is spelledunknown_simon the wire.
Added
- Eleven names reachable straight from
pypic—power_spectrum_1d/2d/3d,
find_saddle_points,reconnection_rate,schindler_xiand friends — plus
twenty-five more frompypic.derivedandpypic.diagnosticsthat were
public in their own modules but only reachable aspypic.derived.x. - API reference pages for
pypic.io,pypic.plotting,pypic.compute,
pypic.comparison,pypic.regrid,pypic.exceptionsandpypic.schema—
seven public modules had none — plus a command-line reference covering
every subcommand. - A numbered example series in
examples/, from arrays to a full
simulation.toml, run by the test suite. SECURITY.md, a code of conduct, a pull-request template, and this
changelog.
Changed
- Name-resolution failures raise
UnknownFieldErrorinstead of a bare
KeyErrorinreduce,computeandfield_info. It subclasses
KeyError, so existing handlers are unaffected. FieldDataset.from_arraysaccepts anyMapping, not onlydict.- Missing-extra errors come from one guard, so the message names the missing
modules, the feature and the install command identically every time. Install
hints now quote the extra —pip install "pypic-plasma[zarr]"— since
unquoted brackets are a glob in zsh.
Removed
- The
lazyextra. It installed dask, but nothing undersrc/imported it;
the chunked-loading path it was reserved for is still unwritten. It will
come back when there is code behind it.
Full detail in CHANGELOG.md.
Install
uv add pypic-plasma # library
uv add "pypic-plasma[plot,cli]" # what most installs wantv0.1.2
Fixed
-
pypic --versionfailed on a bare install. Thepypicconsole
script is registered unconditionally, but Typer and Rich ship in the
cliextra, sopip install pypic-plasmafollowed bypypic --versionraisedModuleNotFoundError: No module named 'typer'.
The command now reports what to install and exits cleanly:$ pypic --version The 'pypic' command requires typer, which ships in the cli extra. Install with: pip install 'pypic-plasma[cli]'Only
cli-extra imports are translated — any other import failure
still propagates, so genuine breakage is not disguised as a missing
extra.pypic.cli:appis unchanged and still importable directly.
Using pypic as a library was never affected; import pypic works on a
bare install and always did.
Install
uv add pypic-plasma # library
uv add "pypic-plasma[cli]" # library + the pypic commandFull test suite: 2764 passing. Documentation:
https://rusaitis.github.io/pypic/
v0.1.1
First release published to PyPI. Install with:
uv add pypic-plasma # or: pip install pypic-plasmaThe distribution is named pypic-plasma; the import name is pypic.
Fixed
pypic --versioncrashed on a clean install. The CLI looked its
version up asimportlib.metadata.version("pypic"), but the
distribution ispypic-plasma, so a fresh environment raised
PackageNotFoundError. The server's/healthprobe had the same
lookup behind a fallback and reported"unknown". Both now read
pypic.__version__, which does not depend on the distribution name.
Internal
- New
tests/test_packaging.pypinspypic.__version__against
pyproject.tomland rejects any distribution-metadata lookup that
names something other than the declared distribution. - CLI error assertions no longer depend on terminal colour. Typer
force-enables rich colour underGITHUB_ACTIONS, and rich highlights
option names, soInvalid --planereached the assertion split across
ANSI escapes. Thirteen tests had been failing in CI only.
Full test suite: 2761 passing. Documentation:
https://rusaitis.github.io/pypic/
Initial Release
Core is near complete, active development is in the applications.