Skip to content

Commit 7b63289

Browse files
Merge pull request #827 from Pipelex/release/v0.24.1
Release v0.24.1
2 parents cea6979 + f7b92de commit 7b63289

6 files changed

Lines changed: 287 additions & 184 deletions

File tree

.github/dependabot.yml

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
version: 2
2+
updates:
3+
# Python dependencies via uv/pip ecosystem
4+
- package-ecosystem: "pip"
5+
directory: "/"
6+
# Target dev: merges to main trigger PyPI publish, so dep bumps must go through
7+
# a proper versioned release (dev -> release/vX.Y.Z -> main), not a direct main merge.
8+
target-branch: "dev"
9+
schedule:
10+
interval: "weekly"
11+
day: "monday"
12+
open-pull-requests-limit: 10
13+
groups:
14+
dev-dependencies:
15+
dependency-type: "development"
16+
update-types:
17+
- "minor"
18+
- "patch"
19+
runtime-minor-patch:
20+
dependency-type: "production"
21+
update-types:
22+
- "minor"
23+
- "patch"
24+
# Runtime majors get individual PRs so breaking changes are reviewed separately.
25+
26+
# GitHub Actions — keeps SHA-pinned actions fresh.
27+
- package-ecosystem: "github-actions"
28+
directory: "/"
29+
target-branch: "dev"
30+
schedule:
31+
interval: "weekly"
32+
day: "monday"
33+
open-pull-requests-limit: 5
34+
groups:
35+
actions-minor-patch:
36+
update-types:
37+
- "minor"
38+
- "patch"
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
name: Dependency Review
2+
3+
on:
4+
pull_request:
5+
branches:
6+
- main
7+
- dev
8+
- 'release/v*'
9+
- 'pre-release/v*'
10+
11+
permissions:
12+
contents: read
13+
pull-requests: write
14+
15+
jobs:
16+
dependency-review:
17+
name: Review new dependencies
18+
runs-on: ubuntu-latest
19+
steps:
20+
- name: Checkout
21+
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
22+
with:
23+
persist-credentials: false
24+
25+
- name: Dependency Review
26+
uses: actions/dependency-review-action@da24556b548a50705dd671f47852072ea4c105d9 # v4.7.1
27+
with:
28+
# Fail the PR if it introduces any new vulnerable dependency at this
29+
# severity or higher. "moderate" matches the Dependabot alert levels
30+
# we just triaged (pytest, cryptography were both "medium"/"moderate").
31+
fail-on-severity: moderate
32+
# Respect existing Dependabot alert dismissals so historical
33+
# risk-accepted items (like transformers CVE-2026-1839) don't block.
34+
allow-ghsas: GHSA-69w3-r845-3855
35+
comment-summary-in-pr: on-failure

.github/workflows/publish-pypi.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ jobs:
5555
name: python-package-distributions
5656
path: dist/
5757
- name: Publish distribution 📦 to PyPI
58-
uses: pypa/gh-action-pypi-publish@release/v1
58+
uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b # release/v1
5959

6060
github-release:
6161
name: >-
@@ -133,7 +133,7 @@ jobs:
133133
name: python-package-distributions
134134
path: dist/
135135
- name: Sign the dists with Sigstore
136-
uses: sigstore/gh-action-sigstore-python@v3.0.0
136+
uses: sigstore/gh-action-sigstore-python@f514d46b907ebcd5bedc05145c03b69c1edd8b46 # v3.0.0
137137
with:
138138
inputs: >-
139139
./dist/*.tar.gz

CHANGELOG.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,17 @@
11
# Changelog
22

3+
## [v0.24.1] - 2026-04-22
4+
5+
### Security
6+
7+
- **lxml floor `>=6.1.0`** to patch CVE-2026-41066 (GHSA-vfmq-68hx-4jfw): default configuration of `iterparse()` and `ETCompatXMLParser()` allowed XXE to local files (`resolve_entities=True`). lxml 6.1.0 changes the default to `resolve_entities='internal'`. Transitive via `docling`; floor added to the `docling` extra in `pyproject.toml` so downstream installs of `pipelex[docling]` cannot resolve a vulnerable version.
8+
- **cryptography floor `>=46.0.7`** to patch CVE-2026-39892 (GHSA-p423-j2cm-9vmq): non-contiguous Python buffers passed to hashing APIs (e.g. `Hash.update()`) could read past the end of the buffer on Python >3.11. Transitive via `google-auth` (pulled by `google`, `gcp-storage`, `google-genai` extras) and `moto` (dev). Floor added to each affected extra in `pyproject.toml` — previous bump was lockfile-only, which did not protect downstream users resolving fresh from PyPI metadata.
9+
- **pytest bumped to 9.0.3** to patch CVE-2025-71176 (GHSA-6w46-j5rx-g56g): vulnerable `/tmp/pytest-of-{user}` directory handling on UNIX could let a local user cause DoS or gain privileges. Dev-only dependency; `pyproject.toml` minimum bumped from `>=9.0.2` to `>=9.0.3`.
10+
- **transformers CVE-2026-1839 (GHSA-69w3-r845-3855) risk-accepted, alert dismissed.** The vulnerability requires calling `transformers.Trainer._load_rng_state()` with an attacker-controlled checkpoint file. Pipelex only pulls `transformers` transitively through `docling-ibm-models` for PDF layout inference; the `Trainer` class is never imported or executed. Upgrade path is blocked upstream: `docling-ibm-models` 3.13.0 pins `transformers!=5.0.*,!=5.1.*,!=5.2.*,!=5.3.*,<6.0.0,>=4.42.0`, explicitly excluding the patched 5.0.0rc3 release. Revisit when `docling-ibm-models` adds support for `transformers>=5.4`.
11+
- **Release-publishing GitHub Actions pinned to SHAs**: `pypa/gh-action-pypi-publish` and `sigstore/gh-action-sigstore-python` in `publish-pypi.yml` are now pinned to full commit SHAs (version kept as a trailing comment) so a compromised tag on a third-party action cannot silently alter a PyPI release. Dependabot keeps them fresh.
12+
- **`.github/dependabot.yml` added**: declares `pip` and `github-actions` ecosystems, weekly cadence, with dev and runtime deps grouped to reduce PR noise. Security updates fire immediately regardless of schedule.
13+
- **`dependency-review.yml` workflow added**: runs GitHub's `dependency-review-action` on PRs to `main`, `dev`, and release branches. Fails the PR if it introduces a dependency with a moderate-or-higher CVE. Respects the existing transformers (GHSA-69w3-r845-3855) risk-acceptance via `allow-ghsas`. Enable as a required status check in branch protection for `main` to block vulnerable merges.
14+
315
## [v0.24.0] - 2026-04-16
416

517
### Added

pyproject.toml

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "pipelex"
3-
version = "0.24.0"
3+
version = "0.24.1"
44
description = "Execute composable AI methods declared in the MTHDS open standard"
55
authors = [{ name = "Evotis S.A.S.", email = "oss@pipelex.com" }]
66
maintainers = [{ name = "Pipelex staff", email = "oss@pipelex.com" }]
@@ -63,11 +63,24 @@ Changelog = "https://docs.pipelex.com/changelog/"
6363
[project.optional-dependencies]
6464
anthropic = ["anthropic>=0.78.0"]
6565
bedrock = ["boto3>=1.34.131", "aioboto3>=13.4.0"]
66-
docling = ["docling>=2.64.0"]
66+
docling = [
67+
"docling>=2.64.0",
68+
"lxml>=6.1.0",
69+
]
6770
fal = ["fal-client>=0.4.1"]
68-
gcp-storage = ["google-cloud-storage>=2.10.0"]
69-
google = ["google-auth-oauthlib>=1.2.1"]
70-
google-genai = ["google-genai", "instructor[google-genai]"]
71+
gcp-storage = [
72+
"google-cloud-storage>=2.10.0",
73+
"cryptography>=46.0.7",
74+
]
75+
google = [
76+
"google-auth-oauthlib>=1.2.1",
77+
"cryptography>=46.0.7",
78+
]
79+
google-genai = [
80+
"google-genai",
81+
"instructor[google-genai]",
82+
"cryptography>=46.0.7",
83+
]
7184
huggingface = ["huggingface_hub>=0.23,<1.0.0"]
7285
linkup = ["linkup-sdk>=0.12.0"]
7386
mistralai = ["mistralai>=1.12.0"]
@@ -84,12 +97,13 @@ docs = [
8497

8598
dev = [
8699
"boto3-stubs>=1.35.24",
100+
"cryptography>=46.0.7",
87101
"moto[s3]>=5.0.0",
88102
"mypy==1.19.1",
89103
"pipelex-tools>=0.3.2",
90104
"pyright==1.1.408",
91105
"pylint==4.0.4",
92-
"pytest>=9.0.2",
106+
"pytest>=9.0.3",
93107
"pytest-asyncio>=0.24.0",
94108
"pytest-cov>=6.1.1",
95109
"pytest-mock>=3.14.0",

0 commit comments

Comments
 (0)