Added
pw.io.sqlite.writeconnector, which writes a Pathway table into a SQLite database file. Supports two modes:stream_of_changes(default) appends each event alongsidetime/diffmetadata columns, whilesnapshotmaintains the current state of the table viaINSERT ... ON CONFLICT DO UPDATEon insertions andDELETEon retractions, keyed on theprimary_keyparameter. Values are encoded using the same storage-class mapping thatpw.io.sqlite.readaccepts, sowrite/readround-trips every supported Pathway type losslessly.init_modecontrols whether the destination table is left as-is, auto-created, or replaced on start-up.pw.io.deltalake.readnow accepts Deltadecimal(p, s)columns. The Pathway type declared in the schema chooses the projection:floatconverts each value through f64 (lossy in general — both because f64 is binary and because its mantissa carries only ~15–17 significant decimal digits) and emits a one-time warning at startup naming each affected column;strformats the unscaled integer with the column's scale and passes the resulting decimal text through unchanged, lossless for the full Delta precision range (up to 38 digits).pw.io.deltalake.writeaccepts a Pathwaystrcolumn when writing into an existing Deltadecimal(p, s)column: each row's text is parsed as decimal and stored as the column's fixed-point value. Combined with the losslessdecimal → strread path, a Deltadecimalcolumn can round-trip through a Pathway pipeline with no precision loss. A string that can't be parsed as a decimal of the column's shape fails the write with an error message naming the offending value, the column's precision and scale, and the specific constraint it violated. Tables that don't contain adecimalcolumn (or that are being created fresh by Pathway) are unaffected.pw.io.deltalake.readnow accepts Deltadatecolumns (mapped ontoDateTimeNaive/DateTimeUtcat midnight on the calendar day, since Pathway has no nativeDatetype) andtimestamp_milliscolumns (mapped onto the same Pathway types with millisecond precision preserved).- The panel widget for table visualization now accepts
page_sizeandtable_heightparameters.
Changed
- BREAKING:
pw.io.iceberg.writeto a Glue catalog no longer acceptsDateTimeUtccolumns. Glue's metastore has no timezone-aware timestamp type, so previous versions silently dropped the timezone on read-back; writes now fail with an explicit error instead of corrupting the zone. To store UTC timestamps in Glue, convert toDateTimeNaivewith UTC-normalized values, or write through the REST catalog, which preserves the timezone. pw.io.sqlite.readnow parses every PathwayValuevariant. In addition toint,float,str,bytes,pw.Json, and theirOptionalforms, the reader now acceptsbool,pw.DateTimeNaive,pw.DateTimeUtc,pw.Duration,pw.Pointer,pw.PyObjectWrapper, homogeneoustuple/list, andnp.ndarray. Composite types are stored asTEXTusing the same JSON encoding thatpw.io.jsonlines.writeemits. Booleans additionally accept PostgreSQL-style textual literals (true/false,yes/no,on/off,t/f,y/n; case-insensitive, whitespace-trimmed), andfloatcolumns tolerate values stored withINTEGERstorage class.pw.io.mssql.readandpw.io.mssql.writenow retry transient SQL Server errors automatically.
Fixed
pw.io.http.rest_connectorno longer raisesTypeError: Cannot instantiate typing.Anywhen a request column has the inferred default schema type (Any). The cast step now skips columns typed asAnyinstead of attempting to call the type as a constructor.pw.io.deltalake.readnow accepts Delta tables whose integer columns use any of the standard Parquet integer widths (INT_8,INT_16,INT_32, unsigned variants), and whose floating-point columns useFLOAT(32-bit) orFLOAT16. Previously the row-level reader only matchedINT_64andDOUBLE, so tables produced by Spark / DuckDB / pandas with explicit narrower casts read back as zero rows with per-row conversion errors.pw.io.deltalake.writepartition columns of typepw.Pointer,pw.Duration, andpw.Jsonnow round-trip correctly throughpw.io.deltalake.read. Previously the values were correctly placed in the partition path on write, but the reader had no decoder for those types and produced a conversion error for every row.