You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: python/CHANGELOG.md
+75Lines changed: 75 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -3,6 +3,81 @@ All notable changes to this project will be documented in this file.
3
3
4
4
This project adheres to [Semantic Versioning](http://semver.org/).
5
5
6
+
## [v1.0.0] - April 16, 2026
7
+
8
+
This is the first major release of `sift-stack-py`. `sift_client` has reached feature parity with `sift_py` and is now the recommended interface for all new development. `sift_py` (deprecated since [v0.10.0](#v0100---january-30-2026)) continues to work and ship in this release; all features previously available only in `sift_py`, including data imports and exports, are now available in `sift_client`.
9
+
10
+
### Migrating from `sift_py` to `sift_client`
11
+
12
+
`sift_client` introduces a unified, Pythonic interface and is not a drop-in replacement for `sift_py`. The major differences are summarized below. For complete examples, see the [sift_client documentation](https://sift-stack.github.io/sift/python/latest/#sift-client-api-new).
13
+
14
+
#### Unified client vs. per-service classes
15
+
16
+
`sift_py` exposed a separate service class per domain (`IngestionService`, `RuleService`, `AssetService`, `ReportTemplateService`, etc.). `sift_client` exposes a single `SiftClient` with resource accessors:
17
+
18
+
```python
19
+
# sift_py
20
+
from sift_py.grpc.transport import SiftChannelConfig, use_sift_channel
21
+
from sift_py.asset.service import AssetService
22
+
23
+
with use_sift_channel(SiftChannelConfig(uri=uri, apikey=apikey)) as channel:
`sift_py` is primarily synchronous, with async support limited to data queries and the gRPC channel. `sift_client` provides both sync and async interfaces for every resource:
`sift_py` returned a mix of raw protobuf types and thin wrappers, with inconsistent update semantics. `sift_client` returns immutable Pydantic models with convenience methods and typed update models:
49
+
50
+
```python
51
+
asset = client.assets.get(asset_id="asset123")
52
+
asset.archive(archive_runs=True)
53
+
asset.update({"tags": ["production", "v2"]})
54
+
```
55
+
56
+
### What's New
57
+
58
+
#### Data Import API in SiftClient
59
+
The `sift_client` module now exposes a data import API supporting CSV, Parquet, TDMS, and HDF5.
60
+
61
+
#### Test Result Logging
62
+
Adds optional logging of test result create and update events, with logging now running in a subprocess while a test runs.
63
+
64
+
#### Progress Indicators
65
+
Adds progress indicators for job polling and file downloads for better visibility during long-running operations.
66
+
67
+
### Bugfixes
68
+
- Fall back to `application/octet-stream` for unknown MIME types on file attachment uploads.
69
+
- Add `py.typed` to the generated proto directory so type checkers pick up protobuf types correctly.
70
+
- Update `sift-stream-bindings` to pick up upstream fixes.
71
+
72
+
### Full Changelog
73
+
-[Add data import API to sift_client](https://github.com/sift-stack/sift/pull/515)
74
+
-[Add optional logging of test result create and update events](https://github.com/sift-stack/sift/pull/529)
75
+
-[Add progress indicators for job polling and file downloads](https://github.com/sift-stack/sift/pull/517)
76
+
-[Refactor files using run_in_executor](https://github.com/sift-stack/sift/pull/518)
77
+
-[Update exports.proto to support parquet](https://github.com/sift-stack/sift/pull/510)
78
+
-[Add py.typed file to proto dir](https://github.com/sift-stack/sift/pull/524)
0 commit comments