v1.20.3
WranglesPY 1.20.3 consolidates all changes since v1.20.0, including the v1.20.1 and v1.20.2 tagged builds that did not receive separate GitHub releases. It improves nested recipe and optional-column behavior, strengthens extract.ai reliability and OpenAI request observability, and modernizes release and deployment authentication.
New Additions
extract.ainow accepts validated OpenAImetadatalabels and automatically adds availablerecipe_nameandwrangles_userattribution. If the caller supplies either of those keys, its value takes precedence; metadata: {} disables automatic attribution. #1171
Enhancements
extract.ainow gives every HTTP attempt the full configured timeout, lets retry backoff occur outside that timeout, and runs the first unique request before parallel fan-out. This makes slow or retried batches more reliable and stops an invalid model after one request instead of repeating it for every row. #1171- OpenAI response storage and metadata are now included in local result-cache identity, so changing either setting does not reuse an incorrectly attributed cached result. Cache hits still avoid creating a duplicate OpenAI request or log. #1171
Bug Fixes
- Recipes run as wrangles now preserve side-effect-free
write: - dataframe:steps so nested recipes return only the requested columns. External writes remain suppressed to avoid duplicated or partial outputs in batches. #1158 - Optional wildcard selectors such as
Col*?now expand matching columns and safely return no columns when nothing matches. Wildcard expansion also no longer mutates the caller's column list, so repeated expansion remains consistent. #1155 extract.ainow correctly distinguishes transport failures from HTTP error responses, retries eligible failures, and fails clearly on inaccessible or nonexistent OpenAI models in both Responses and Chat Completions workflows. #1171
Breaking Changes
- The
extract.aideadlineargument andextract_ai.total_deadline_secondsconfiguration setting were removed; usetimeout,retries, andthreadsto control each request. Custom configuration files must also renameextract_ai.max_concurrencytoextract_ai.default_concurrency; the default remains 32. #1171 - Responses API requests are now stored by OpenAI by default (
store: true) so they can appear in OpenAI Logs > Responses. Setstore: falseto opt out; this setting is not forwarded as Chat Completions storage. #1171
Developer and Release Improvements
- Development schema publishing and DEV/PROD deployment dispatch now use short-lived, repository-scoped Wrangleworks Deployments GitHub App tokens instead of shared personal access tokens. There is no PAT fallback, and the deployment workflows perform early configuration and installation-access checks. #1173
- Package metadata now reports version
1.20.3, so artifacts built from this release identify themselves correctly.
Full Changelog: v1.20.0...v1.20.3