Skip to content

fix: (de)serialize info.repodata_revisions as dictionary - #2485

Merged
baszalmstra merged 1 commit into
conda:mainfrom
baszalmstra:claude/update-repodata-revisions-pWZ7s
Jun 9, 2026
Merged

fix: (de)serialize info.repodata_revisions as dictionary#2485
baszalmstra merged 1 commit into
conda:mainfrom
baszalmstra:claude/update-repodata-revisions-pWZ7s

Conversation

@baszalmstra

Copy link
Copy Markdown
Collaborator

Description

Updates info.repodata_revisions to match the latest CEP draft (conda/ceps#146), which describes it as a dictionary keyed by revision identifier (e.g. "v3") rather than a list. Both the regular and sharded repodata now read and write this dictionary form, and the in-memory representation is a revision-keyed map so a revision cannot appear twice.

The Python indexing bindings accept the same dictionary shape for repodata_revisions, with timestamps given as datetime values for consistency with the rest of the API.

@danyeaw

How Has This Been Tested?

  • Unit and integration tests across the affected crates, including a regression test that reads the dictionary form from a repodata file in the test data and asserts it parses correctly.
  • Python unit test covering the dictionary input and the resulting output.
  • Formatting and linting pass for both Rust and Python.

AI Disclosure

  • This PR contains AI-generated content.
    • I have tested any AI-generated content in my PR.
    • I take responsibility for any AI-generated content in my PR.

Tools: Claude

Checklist:

  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • I have added sufficient tests to cover my changes.

Update the top-level info.repodata_revisions (and the sharded index
equivalent) to match the latest CEP draft
(conda/ceps#146), which describes it as a
dictionary keyed by revision identifier (e.g. "v3") instead of a list.
The in-memory representation is a revision-keyed map so a revision cannot
appear twice.

The Python indexing bindings accept the same dictionary shape for
repodata_revisions, with timestamps given as datetime values for
consistency with the rest of the API.

Includes a regression test that reads the dictionary form from a repodata
file in the test data and asserts it parses correctly.

https://claude.ai/code/session_01ModY1fX2YqL6ULMbJtfqWa
@baszalmstra
baszalmstra force-pushed the claude/update-repodata-revisions-pWZ7s branch from 0441119 to f0c5c85 Compare June 4, 2026 07:30
@baszalmstra
baszalmstra requested review from pavelzw and wolfv June 4, 2026 07:53
@baszalmstra
baszalmstra merged commit a4025b6 into conda:main Jun 9, 2026
24 checks passed
@octo-sts octo-sts Bot mentioned this pull request Jun 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants