Version 0.9.3 - #95
Conversation
There was a problem hiding this comment.
Pull request overview
This PR packages PySeq v0.9.3, expanding the frame-range syntax (stepped ranges and signed frames) across the core library, CLI tooling, documentation, and adding benchmark + GitHub Pages publishing infrastructure.
Changes:
- Added stepped serialized frame-range parsing/formatting (
%x) and signed frame support, refactoring range logic into a newpyseq.frangehelper module. - Updated sequence resolution/uncompression to understand the new range forms, and expanded CLI + unit/regression test coverage (including negative filenames).
- Introduced benchmark scripts, performance regression tests, and GitHub Actions workflows for scheduled benchmarks and Pages publishing.
Reviewed changes
Copilot reviewed 31 out of 32 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
lib/pyseq/frange.py |
New shared helpers for parsing/formatting extended (stepped/signed) frame ranges. |
lib/pyseq/seq.py |
Core sequence logic updates: signed padding behavior, %x formatting, and extended-range uncompression parsing. |
lib/pyseq/util.py |
Updates to sequence resolution/reference parsing and subset construction for new range syntax. |
lib/pyseq/config.py |
Expands default frame token regex to match signed frame numbers in filenames. |
lib/pyseq/__init__.py |
Version bump to 0.9.3. |
tests/test_pyseq.py |
Adds coverage for stepped ranges, negative frames, and resolve_sequence_reference; moves performance test coverage out. |
tests/test_performance.py |
New coarse performance regression tests for key hot paths (construction, missing formatting, stepped ranges). |
tests/test_lss.py |
Adds CLI test asserting %x renders compact stepped ranges. |
tests/test_scopy.py |
Adds CLI copy test coverage for negative serialized ranges. |
tests/test_smove.py |
Adds CLI move test coverage for negative serialized ranges. |
tests/test_srm.py |
Adds CLI remove test coverage for negative serialized ranges. |
tests/files/stepA.1001.exr |
Adds stepped-range fixture file for discovery/reference tests. |
tests/files/stepA.1004.exr |
Adds stepped-range fixture file for discovery/reference tests. |
tests/files/stepA.1007.exr |
Adds stepped-range fixture file for discovery/reference tests. |
tests/files/stepA.1010.exr |
Adds stepped-range fixture file for discovery/reference tests. |
tests/files/negA.-0001.exr |
Adds negative-frame fixture file for signed filename support tests. |
tests/files/negA.-0002.exr |
Adds negative-frame fixture file for signed filename support tests. |
tests/files/negA.0000.exr |
Adds zero-frame fixture file for signed filename support tests. |
tests/files/negA.0001.exr |
Adds positive-frame fixture file for signed filename support tests. |
scripts/benchmarks_core.py |
Adds a core-library benchmark runner producing JSON and/or Markdown summaries. |
scripts/benchmarks_cli.py |
Adds CLI benchmark runner covering several console tools with smoke/full profiles. |
scripts/build_pages_site.py |
Generates a Jekyll-friendly markdown tree and integrates benchmark artifacts into Pages output. |
.github/workflows/benchmarks.yml |
Adds scheduled/manual benchmark workflow with artifact upload and summary output. |
.github/workflows/publish-docs.yml |
Adds GitHub Pages publishing workflow building docs + benchmark reports. |
docs/performance.md |
Documents performance strategy, regression tests vs benchmarks, and result formats. |
docs/formatting.md |
Documents %x and extended serialized range syntax (including signed frames). |
docs/examples.md |
Adds examples for stepped and signed serialized ranges. |
docs/cli-tools.md |
Updates CLI usage examples to include stepped serialized range syntax. |
docs/README.md |
Adds performance guide link. |
README.md |
Adds README examples and range syntax summary for stepped/signed serialized ranges. |
CHANGELOG.md |
Adds 0.9.3 release notes. |
.gitignore |
Ignores additional agent/cache directories. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Benchmark ComparisonNo benchmark exceeded the +3.00% and +0.005s regression thresholds. pyseq benchmark comparisonBaseline:
|
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 44 out of 45 changed files in this pull request and generated 5 comments.
Comments suppressed due to low confidence (2)
tests/test_smove.py:250
- This test enables
PYSEQ_ALLOW_NEGATIVE_FRAMES=1even though it only uses positive embedded ranges ("plate.2-4.rgb" / "beauty.20-22.rgb"). Since negative frames are opt-in, avoid setting the flag here so the default behavior stays covered.
tests/test_scopy.py:147 - This test enables
PYSEQ_ALLOW_NEGATIVE_FRAMES=1even though it only uses positive embedded ranges ("plate.2-4.rgb" / "beauty.20-22.rgb"). Since negative frames are opt-in, keep the default environment for this test case.
This pull request introduces several new features, improvements, and documentation updates focused on explicit stepped frame range support, negative frame handling, and project performance infrastructure. Notably, it adds canonical stepped range formatting (
%x), enables parsing and formatting of signed frame numbers, and integrates benchmark tooling with CI workflows and documentation publishing. The documentation and contributor guidelines have been expanded to reflect these changes and to provide clear guidance for performance-sensitive development.New Features and Syntax Support:
%x(e.g.,1-10x2,20-30x5,42) and explicit stepped range parsing for serialized and embedded sequence references, including support for negative frame numbers whenPYSEQ_ALLOW_NEGATIVE_FRAMES=1is set. [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13]Performance and Benchmarking Infrastructure:
.github/workflows/benchmarks.yml) that runs on pull requests, scheduled intervals, and manual triggers. It compares candidate and baseline performance, enforces regression thresholds, and posts results to pull requests..github/workflows/publish-docs.yml) to build and deploy documentation and benchmark reports to GitHub Pages.CONTRIBUTING.mdto emphasize performance, benchmarking policy, and recommended workflows for performance-sensitive changes.Documentation and Contributor Guidance:
README.md,docs/formatting.md,docs/examples.md,docs/cli-tools.md, anddocs/frame-patterns.mdto cover the new stepped range syntax, negative frame support, and usage examples. [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13]README.md. [1] [2]Continuous Integration Improvements:
.github/workflows/tests.ymlto only run on relevant paths for improved CI efficiency.Changelog:
CHANGELOG.mdto reflect all major new features, syntax changes, and infrastructure improvements in version 0.9.3.