Skip to content

Migrate to uv, drop 3.9 and 3.10, fix tests#335

Merged
PastelStorm merged 14 commits intomainfrom
evoss/migrate-to-uv
Apr 3, 2026
Merged

Migrate to uv, drop 3.9 and 3.10, fix tests#335
PastelStorm merged 14 commits intomainfrom
evoss/migrate-to-uv

Conversation

@PastelStorm
Copy link
Copy Markdown
Contributor

@PastelStorm PastelStorm commented Apr 3, 2026

Note

Medium Risk
Medium risk because it changes packaging/build tooling and CI execution (Poetry→uv, setuptools build) and adjusts split-PDF hook timeout/cleanup behavior, which can affect test stability and request handling.

Overview
Migrates the project from Poetry to uv: CI now installs via uv sync --locked, the Makefile runs lint/tests with uv run, and publishing is switched to uv build/uv publish with a hardened scripts/publish.sh (strict bash + Python >=3.11 guard). Python support is narrowed to 3.11+ (CI matrix and pylintrc), dependency versions are updated, and poetry.lock/poetry.toml are removed in favor of a setuptools-based pyproject.toml with dynamic versioning.

Improves split-PDF behavior and test robustness: the split hook now propagates request timeouts into chunk requests, scales the outer future timeout by concurrency “waves”, and ensures per-operation state is cleaned up on both success and dummy-request failures; corresponding unit/integration tests were updated (including relaxed equivalence checks for hi_res OCR outputs and longer client timeouts). Adds regression-guard unit tests to enforce key packaging/CI/publish invariants and multipart file serialization, and removes an unused/disabled encryption test suite.

Reviewed by Cursor Bugbot for commit 3e0d3d3. Bugbot is set up for automated code reviews on this repo. Configure here.

@socket-security
Copy link
Copy Markdown

socket-security bot commented Apr 3, 2026

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Addedgithub/​astral-sh/​setup-uv@​d0d8abe699bfb85fec6de9f7adb5ae17292296ff99100100100100

View full report

Copy link
Copy Markdown

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 3e0d3d3. Configure here.

# multiple waves (ceil(chunks / concurrency)). Scale the outer future
# timeout accordingly so healthy multi-wave batches aren't killed early.
num_waves = max(1, math.ceil(len(tasks) / concurrency_level))
per_chunk = timeout_seconds or DEFAULT_FUTURE_TIMEOUT_MINUTES * 60
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Falsy timeout value silently replaced by 60-minute default

Low Severity

The expression per_chunk = timeout_seconds or DEFAULT_FUTURE_TIMEOUT_MINUTES * 60 uses Python truthiness, so a timeout_seconds value of 0.0 (falsy) silently falls back to 3600 seconds. This is inconsistent with the client_timeout line above it, which correctly treats 0.0 as a real timeout via the is not None check. Using if timeout_seconds is not None instead of or would preserve the intended semantics for all numeric values.

Additional Locations (1)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 3e0d3d3. Configure here.

@PastelStorm PastelStorm merged commit a40df61 into main Apr 3, 2026
17 of 18 checks passed
@PastelStorm PastelStorm deleted the evoss/migrate-to-uv branch April 3, 2026 22:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants