Skip to content

fix: resolve review findings and release 1.9.1#24

Merged
wlaur merged 1 commit into
mainfrom
fix/review-findings-1.9.1
Jul 23, 2026
Merged

fix: resolve review findings and release 1.9.1#24
wlaur merged 1 commit into
mainfrom
fix/review-findings-1.9.1

Conversation

@wlaur

@wlaur wlaur commented Jul 23, 2026

Copy link
Copy Markdown
Owner

Summary

Resolve every actionable finding in the holistic 1.9.0 review and prepare patch release 1.9.1.

Correctness and consistency

  • mask every plugin row with a non-finite CoolProp input, including IF97 trivial/state-independent outputs
  • treat a single-species bracket fraction as an absolute concentration only for INCOMP; HEOS::CO2[0.5] now raises, while [1.0] remains accepted
  • require fractions for multi-species names instead of degrading missing mixture configuration to NaN
  • validate Polars Series magnitudes as numeric, normalize integer/empty Series to Float64, and reject bool/string/list/datetime/unit-typed Series
  • refuse implicit absolute-temperature ↔ temperature-difference reinterpretation when reading QuantityFrame data
  • propagate unsupported scalar CoolProp input pairs consistently with array/expression paths
  • make floor division use divide-then-floor semantics across float, numpy, Series, and Expr magnitudes
  • reject mixed vector-container arithmetic before numpy/pint/polars dispatch can become state-dependent
  • reject Expr → Series astype instead of creating an Object Series
  • share Quantity unit spelling normalization with the Polars dtype layer and turn malformed tokenizer failures into UndefinedUnitError

Native/plugin and maintenance

  • enable i8/i16/u8/u16 Polars features so small-integer inputs cannot panic the generated wrapper
  • reject nonnumeric plugin columns instead of non-strictly casting bool/string values
  • retain scalar states after a failed flash
  • range-check percent-form INCOMP concentrations
  • use a checked c_long conversion for input pairs on Windows
  • tighten installed-wheel docs-root discovery
  • refresh stale docs/output/size/license wording and remove the vestigial macOS 10.15 override (arm64 correctly defaults to 11.0)
  • bump pyproject.toml and uv.lock to 1.9.1

Compatibility note

This deliberately tightens accepted inputs: CoolProp's high-level parser silently ignores a single-species HEOS fraction, while its low-level state API can compute with the unnormalised vector. encomp now consistently requires non-INCOMP fractions to sum to one, so HEOS::CO2[0.5] raises instead of returning silently wrong physics.

Local validation

  • ruff check / ruff format --check
  • pyright strict, pyrefly, ty: zero errors
  • cargo fmt --check, clippy -D warnings, Rust tests: pass
  • full default suite without Python CoolProp: 1050 passed, 2 expected oracle skips
  • explicit CoolProp 8.0.0 oracle parity: 100 passed
  • local and Read the Docs-parity Sphinx builds with warnings as errors: pass
  • locally built encomp-1.9.1-cp313-abi3-macosx_11_0_arm64.whl installed in a fresh external Python 3.14 env against current PyPI dependencies (including Polars 1.43), native self-check passed, no Python CoolProp installed, shipped suite: 797 passed, 20 expected skips

@wlaur
wlaur merged commit 6c1fdfc into main Jul 23, 2026
21 checks passed
@wlaur
wlaur deleted the fix/review-findings-1.9.1 branch July 23, 2026 08:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant