Skip to content

Document the migration, scope the library, bump to 0.2.0 - #4

Merged
pierrebrunelle merged 2 commits into
mainfrom
chore/release-0.2.0
Sep 10, 2026
Merged

pierrebrunelle merged 2 commits into
mainfrom
chore/release-0.2.0

Conversation

@pierrebrunelle

Copy link
Copy Markdown
Member

Follow-up to #3: the release prep.

Why this is needed

PyPI serves 0.1.0 with an unbounded pixeltable>=0.3.8. A fresh pip install pixelmemory today resolves Pixeltable 0.7.6 and gets a package whose Document, Audio and Video memories raise on construction. #3 fixed the repo; this is what makes the fix reachable.

I have not published. That is yours to run when you are ready.

Migrating from 0.1.x

Three caller-visible changes documented: Python 3.11+, the two renamed splitter parameter dataclasses, and search()/views() replacing the chunk_views/frame_views subscripts.

The renames are called out as unavoidable rather than cosmetic — those field names go through dataclasses.asdict() straight into Pixeltable's iterators, so they are the API, and the old names were the bug:

0.1.x 0.2.0
chunk_duration_sec duration
overlap_sec overlap
min_chunk_duration_sec min_segment_duration
html_skip_tags skip_tags

Nothing breaks on the chunk_views change in practice: it is a list on resources, not a mapping on Memory, so those subscripts always raised AttributeError.

When not to use pixelmemory

The audit raised whether the wrapper still earns its keep, and I think it is worth saying out loud in the README rather than letting someone discover it three days in. If the schema is fixed when you write the code, TableModel + FastAPIRouter do this natively and the wrapper adds nothing.

What pixelmemory is actually for: a schema chosen at runtime — a Context list from a config file or a request — plus the multimodal ingest pipelines it wires in the right dependency order (audio → segments → transcription → sentences → embeddings; video → frames + captions).

I would rather the README name its own limits than oversell.

One note on the test gates

The two grep gates from #3 now skip the migration section. A migration guide has to quote the old broken calls to show what replaces them, so scanning it for those calls failed — my own new section tripped them. I verified the gates still fire by injecting a violation outside that section, so this is a scoped exemption and not a disabled check.

28 tests, ruff clean.

🤖 Generated with Claude Code

pierrebrunelle and others added 2 commits September 10, 2026 10:36
PyPI still serves 0.1.0 with an unbounded `pixeltable>=0.3.8`, so a fresh
`pip install pixelmemory` resolves Pixeltable 0.7.6 and gets a package whose
Document, Audio and Video memories raise on construction. #3 fixed the repo;
this is what makes the fix reachable.

Adds a "Migrating from 0.1.x" section covering the three caller-visible
changes: Python 3.11+, the two renamed splitter parameter dataclasses, and
search()/views() replacing the chunk_views/frame_views subscripts. The
renames are called out as unavoidable, because those field names are passed
straight through to Pixeltable's iterators and so are the API rather than a
naming choice.

Adds "When not to use pixelmemory". If the schema is fixed when you write the
code, TableModel and FastAPIRouter do this natively and the wrapper is not
earning anything; it is worth saying so rather than letting someone discover
it later. What pixelmemory is actually for is a schema chosen at runtime, plus
the multimodal ingest pipelines it wires in the right dependency order.

The two grep gates now skip the migration section: a migration guide has to
quote the old broken calls to show what replaces them, so scanning it for
those calls failed. Verified the gates still fire on a violation injected
outside that section.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The version bump left uv.lock recording 0.1.0. CI did not notice, because it
ran a bare `uv sync`, which quietly rewrites the lock instead of failing.
pixelagent's workflow uses --locked and caught the same drift immediately, so
this adopts it: a lockfile that disagrees with pyproject.toml is now a red
build rather than a silent fixup.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@pierrebrunelle
pierrebrunelle merged commit 9e186b2 into main Sep 10, 2026
4 checks passed
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.

1 participant