Skip to content

2.9.0

Latest

Choose a tag to compare

@jmtts jmtts released this 02 Nov 13:37
· 14 commits to main since this release
f2e80b3

2.9.0

Published to PyPI as werk24==2.9.0. Not purely additive: two ask types
the API no longer answers have been removed (see "Removed" below).

New in the models

  • Features response gains four lists:
    • slots: elongated holes with round ends (2x Slot 14x15, 3x Slot Ø10), with width and length.
    • retaining_ring_grooves: grooves for retaining rings on a shaft or in a bore (DIN 471 30x1,5), with the ring side, nominal diameter, ring thickness and a manufacturer's designation.
    • splines: straight-sided splines (ISO 14 - 8 x 36 x 40).
    • involute_splines: involute splines (DIN 5480 - W 40 x 2 x 30 x 18 x 8f).
  • CenterHole.thread carries the thread of a threaded center hole (DIN 332-D M16).
  • GeneralTolerances gains tolerance_note (the general tolerance note as written) and tolerance_table (explicit linear tolerance rules as rows).
  • Roughness.thermal_cut_quality (and the v1 roughness label) carries an ISO 9013 thermal cut quality.

Compatibility

  • Response fields this version does not know are kept. A v2 answer is parsed with them kept on the model as plain data (response.<field>, response.model_extra), and the first time each one is seen a warning names it and says to upgrade. Older versions dropped such fields without a word. Models built directly still ignore unknown fields, and model_dump() still leaves kept ones out.
  • An answer the client cannot read at all still stays the plain dict the server sent, and is now logged once per kind of failure.

Removed

  • EXCEL_SUMMARY ask (W24AskType.EXCEL_SUMMARY, W24AskExcelSummary). The API no longer produces it.

  • CANVAS_TABLES ask (W24AskType.CANVAS_TABLES, W24AskCanvasTables). The API never returned a result for it.

    An ask list that still names either is now refused when it is built (ValidationError, or Unknown Ask Type from the v1 deserializer).

  • reason on TechreadException. The API never sent it. A message that still carries it parses as before.

Client and transport

  • Each result is handed over as soon as it arrives. Previously a result was held back until the server sent the next message, so an early result such as a sheet image could wait many seconds. Order is unchanged.
  • RequestTooLargeException names both limits: 10 MiB for a drawing sent with read_drawing, about 4.6 MB for a callback request.

Docs

  • The three priority levels are described by name: PRIO1 Express (picked up within 10 seconds, p99), PRIO2 Priority (within 1 minute), PRIO3 Best-effort (within 10 minutes). The enum values are unchanged.
  • The confidence scale is documented (1.0 nothing in doubt, 0.8 or above a reasonable reading, below 0.8 at least one concrete reason to doubt it) along with the objects it covers. confidence_min is no longer applied by the API; the field stays valid.
  • Webhook delivery is documented as at-least-once, with how to deduplicate.
  • read_drawing_sync's return value is documented.

Dependencies

Tested pins refreshed: pydantic 2.14.1, aiohttp 3.14.5, typer 0.27.3, cryptography 50.0.2, python-dotenv 1.2.4, certifi 2026.10.23. The constraints in pyproject.toml are unchanged for consumers.

Full changelog: 2.8.0...2.9.0