diff --git a/python/CHANGELOG.md b/python/CHANGELOG.md index 5e8222f35..6be3952f1 100644 --- a/python/CHANGELOG.md +++ b/python/CHANGELOG.md @@ -5,6 +5,24 @@ This project adheres to [Semantic Versioning](http://semver.org/). +## [v0.25.0] - October 26, 2026 + +### Features + +- `detect_config` and `import_from_path` detect flat dataset Parquet configs on the client, so wide Parquet files no longer fail detection with `RESOURCE_EXHAUSTED` when their footer exceeds the server's 20 MiB request limit. ([#819](https://github.com/sift-stack/sift/pull/819)) + + Flat dataset Parquet detection now requires pyarrow. Install it with `pip install sift-stack-py[parquet]`. The `file-imports` extra includes it. + + `detect_config` and `import_from_path` also accept `relative_start_time`, so files with a relative time format can be detected and imported without editing the config. +- Added `metrics_streaming_interval` and `rate_limit_policy` to `create_ingestion_config_streaming_client` and `create_auto_register_streaming_client`. + + `metrics_streaming_interval` takes a `timedelta` and defaults to 500 ms. Pass `None` to disable metrics streaming. `rate_limit_policy` takes a `RateLimitPolicyPy` from `sift_stream_bindings` and controls how rate-limited control-plane calls, such as stream setup, `attach_run`, and flow registration, are handled. By default, the stream waits the delay Sift requests before retrying. When a rate limit is not retried, or the retries run out, these calls raise `RateLimitedErrorPy`, and `retry_delay.to_timedelta()` returns the delay Sift requested. This release requires `sift-stream-bindings` 0.6.1. + +### Fixes + +- Removed the `pyOpenSSL` dependency. `cert_via_openssl` now converts certificates with the standard library `ssl` module, so the `openssl` extra is no longer needed and is removed. The extra capped `cryptography` below 42, which kept installs on a release with known vulnerabilities. ([#855](https://github.com/sift-stack/sift/pull/855)) +- Raised the `filelock` upper bound to `<5`, so Python 3.11+ installs resolve `filelock` 4.2.1 or later, which fixes GHSA-v4x8-3wr5-3wq8, GHSA-9vhv-jxww-xfm5, and GHSA-567q-5qvw-pf92. ([#855](https://github.com/sift-stack/sift/pull/855)) + ## [v0.24.0] - October 20, 2026 ### Features diff --git a/python/changelog.d/+stream-metrics-rate-limit-options.feat.md b/python/changelog.d/+stream-metrics-rate-limit-options.feat.md deleted file mode 100644 index b26c8a599..000000000 --- a/python/changelog.d/+stream-metrics-rate-limit-options.feat.md +++ /dev/null @@ -1,3 +0,0 @@ -Added `metrics_streaming_interval` and `rate_limit_policy` to `create_ingestion_config_streaming_client` and `create_auto_register_streaming_client`. - -`metrics_streaming_interval` takes a `timedelta` and defaults to 500 ms. Pass `None` to disable metrics streaming. `rate_limit_policy` takes a `RateLimitPolicyPy` from `sift_stream_bindings` and controls how rate-limited control-plane calls, such as stream setup, `attach_run`, and flow registration, are handled. By default, the stream waits the delay Sift requests before retrying. When a rate limit is not retried, or the retries run out, these calls raise `RateLimitedErrorPy`, and `retry_delay.to_timedelta()` returns the delay Sift requested. This release requires `sift-stream-bindings` 0.6.1. diff --git a/python/changelog.d/819.feat.md b/python/changelog.d/819.feat.md deleted file mode 100644 index b88e8a01d..000000000 --- a/python/changelog.d/819.feat.md +++ /dev/null @@ -1,5 +0,0 @@ -`detect_config` and `import_from_path` detect flat dataset Parquet configs on the client, so wide Parquet files no longer fail detection with `RESOURCE_EXHAUSTED` when their footer exceeds the server's 20 MiB request limit. - -Flat dataset Parquet detection now requires pyarrow. Install it with `pip install sift-stack-py[parquet]`. The `file-imports` extra includes it. - -`detect_config` and `import_from_path` also accept `relative_start_time`, so files with a relative time format can be detected and imported without editing the config. diff --git a/python/changelog.d/855.fix.1.md b/python/changelog.d/855.fix.1.md deleted file mode 100644 index 96d47c67c..000000000 --- a/python/changelog.d/855.fix.1.md +++ /dev/null @@ -1 +0,0 @@ -Removed the `pyOpenSSL` dependency. `cert_via_openssl` now converts certificates with the standard library `ssl` module, so the `openssl` extra is no longer needed and is removed. The extra capped `cryptography` below 42, which kept installs on a release with known vulnerabilities. diff --git a/python/changelog.d/855.fix.md b/python/changelog.d/855.fix.md deleted file mode 100644 index a29dd1f09..000000000 --- a/python/changelog.d/855.fix.md +++ /dev/null @@ -1 +0,0 @@ -Raised the `filelock` upper bound to `<5`, so Python 3.11+ installs resolve `filelock` 4.2.1 or later, which fixes GHSA-v4x8-3wr5-3wq8, GHSA-9vhv-jxww-xfm5, and GHSA-567q-5qvw-pf92. diff --git a/python/pyproject.toml b/python/pyproject.toml index 834b5e8b6..8dcdcfe81 100644 --- a/python/pyproject.toml +++ b/python/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "sift_stack_py" -version = "0.24.0" +version = "0.25.0" description = "Python client library for the Sift API" requires-python = ">=3.8" readme = { file = "README.md", content-type = "text/markdown" } diff --git a/python/uv.lock b/python/uv.lock index b05b3a2eb..36d4ed307 100644 --- a/python/uv.lock +++ b/python/uv.lock @@ -4414,7 +4414,7 @@ wheels = [ [[package]] name = "sift-stack-py" -version = "0.24.0" +version = "0.25.0" source = { editable = "." } dependencies = [ { name = "alive-progress", version = "3.1.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" },