Skip to content

bidlint v0.2.1

Choose a tag to compare

@github-actions github-actions released this 20 Aug 02:00
b42872d

bidlint v0.2.1

Released: 2026-08-20

v0.2.1 hardens bidlint for more realistic engineering datasheets and larger multi-vendor review workflows while keeping the deterministic decision model conservative.

Highlights

Layout-aware vendor PDF parsing

  • preserves horizontal PDF layout for vendor datasheets
  • reconstructs explicit parameter/unit/required/offered tables
  • reads the offered column without confusing it with requirement/reference columns
  • supports two independent numeric parameter/value pairs on one visual row
  • supports a final offered value wrapped to the next numeric line
  • supports parameter labels continued by an explicit trailing hyphen
  • skips ambiguous multi-column rows rather than guessing

Broader deterministic unit conversion

The registry now covers:

  • power: W / kW / MW
  • voltage: mV / V / kV
  • current: mA / A / kA
  • frequency: Hz / kHz / MHz
  • apparent power: VA / kVA / MVA
  • pressure: Pa / kPa / MPa / mbar / bar / psi
  • length: mm / cm / m / km / in / ft
  • mass: g / kg / t
  • force: N / kN
  • flow: L/s / L/min / m³/s / m³/h
  • temperature: °C / °F / K

Dimension safety remains explicit. Real power is not treated as apparent power, voltage is not current, gauge/absolute pressure suffixes are not collapsed, and frequency is not converted into rotational speed.

Sanitized datasheet regression fixtures

Tests now render vendor-neutral motor, pump and valve layouts into temporary PDFs and verify:

  • multi-page source provenance
  • revision/metadata noise
  • explicit technical tables
  • side-by-side fields
  • wrapped table continuations

No third-party vendor PDF or confidential project data is embedded in these fixtures.

Batch comparison ergonomics

  • multi-vendor Markdown technical bid tabulation export
  • rank --top N for compact terminal display
  • full JSON / Markdown / HTML / CSV exports remain complete even when terminal output is limited

Safety boundaries

v0.2.1 deliberately does not claim arbitrary merged-cell reconstruction. Coordinate-aligned sparse cells and advanced ambiguous multi-column layouts remain scheduled for v0.2.2 so they can be implemented without positional guessing.

OCR also remains outside the deterministic parser.

Validation

The release branch must pass Ruff and pytest on Python 3.11, 3.12 and 3.13 before merge.