Skip to content

Prepare for v0.2.0, raise the numpy floor, refresh the lock, and let the browser wrap the docs - #45

Merged
fedonman merged 5 commits into
mainfrom
packaging-metadata
Sep 8, 2026
Merged

Prepare for v0.2.0, raise the numpy floor, refresh the lock, and let the browser wrap the docs#45
fedonman merged 5 commits into
mainfrom
packaging-metadata

Conversation

@fedonman

@fedonman fedonman commented Sep 8, 2026

Copy link
Copy Markdown
Member

Raises the numpy floor from >=2.1 to >=2.3.2, the oldest release with wheels for every Python the test matrix covers. 2.1 has no 3.14 wheels, and it had aged past the two years of releases the floor is meant to span. xarray stays where it is: 2026.4.0 is the first release that does not trip filterwarnings = ["error"] when paired with numpy 2.5. urls becomes a [project.urls] table with one entry per line and gains a Changelog link, and the docs stop restating dependency versions that pyproject.toml already carries.

Then the lock file is refreshed. Fifteen packages move, all tooling apart from a numpy patch, the largest being towncrier 25.8.0 to 26.9.0 and ruff 0.16.4 to 0.16.6. The new ruff adds pytest-fixture-autouse, which lands on the two fixtures that close a test's figures and empty the registry between tests; both need to run for every test in their file, so the rule joins the tests/** ignores.

Every paragraph across the site, the README and the changelog becomes one line, since a newline inside a paragraph was never a line break the reader saw and the wrap column had to be held by hand on every edit. Fenced code, headings, tables, list structure, mkdocstrings directives with their YAML options blocks, and the HTML comments the documentation checker reads all keep their own line breaks, and the site renders to the same HTML as before once the whitespace outside a <pre> is collapsed. Separately, the Releasing section gains the step that was missing at the end: what happens to the version on main after a release, and why the patch moves rather than the minor, the minor being the format version both file headers carry.

Finally, towncrier build renders the fifteen fragments under changelog/ into a ## 0.2.0 section and deletes them. The version needed no change, since #42 already moved it to 0.2.0 mid-cycle for the format version to be derived from it. The rendered entries are then ordered by what a reader needs first rather than by pull request number, so within each heading the changes to how the library is used come before the documentation ones, and a paragraph opens the section with the one thing an 0.1.0 user has to know: a file written by that release no longer loads, and files written from here on are carried up by a migration instead.

@pullpo-for-slack

Copy link
Copy Markdown

🔗Pullpo.io Slack PR-Channel

@pullpo-for-slack

pullpo-for-slack Bot commented Sep 8, 2026

Copy link
Copy Markdown

AI Analysis

Purpose of the changes:

Update project dependencies and documentation for better clarity and accuracy.

Improvements and suggestions

(dropdown):
  • In file pyproject.toml / dependencies

Issue:
The version of numpy was updated from >=2.1 to >=2.3.2, which may require a review of compatibility with existing code.

Suggested solution:
Ensure that all code utilizing numpy is compatible with version 2.3.2 and update any relevant tests to reflect this change.

Detailed file changes

(dropdown):
  • In file pyproject.toml:

    • Updated numpy dependency version from >=2.1 to >=2.3.2.
    • Moved URLs into a structured [project.urls] section for better organization.
  • In file docs/developer/architecture.md:

    • Updated documentation to reflect the new numpy version without specifying the minimum version.
  • In file docs/developer/contributing.md:

    • Clarified the runtime dependency requirements in the contributing guidelines.
  • In file docs/getting-started.md:

    • Removed specific version requirements in the installation instructions for numpy and xarray for clarity.
  • In file uv.lock:

    • Updated the numpy version in the lock file to >=2.3.2.

numpy moves from >=2.1 to >=2.3.2, the oldest release carrying wheels for
every Python the project supports. 2.1 has none for 3.14, which the test
matrix covers, and it had aged past the two years of releases the floor is
meant to span. xarray stays at >=2026.4.0: it is the first release that
does not trip `filterwarnings = ["error"]` when paired with numpy 2.5.

`urls` becomes a `[project.urls]` table with one entry per line, which is
also what lets it gain a `Changelog` pointing at CHANGELOG.md. A table has
to sit below the bare keys of `[project]`, so it moves down the file. The
docs no longer restate any dependency's version, in the install
instructions or in the two developer pages, since pyproject.toml is where
those live.
Fifteen packages move, all of them tooling apart from a numpy patch:
towncrier 25.8.0 to 26.9.0, ruff 0.16.4 to 0.16.6, ty 0.0.74 to 0.0.79,
zensical 0.0.57 to 0.0.59, coverage, hypothesis, click, cattrs, fonttools,
kiwisolver, platformdirs, deepmerge, griffelib, mkdocstrings-python, and
numpy 2.5.2 to 2.5.3.

The new ruff carries `pytest-fixture-autouse`, which reads `autouse=True`
as something to avoid. The two fixtures it lands on close the figures a
test opened and hand each test an empty registry, and both have to run for
every test in the file, so the rule joins the `tests/**` ignores rather
than the fixtures losing what makes them work.
@pullpo-for-slack

Copy link
Copy Markdown

AI Analysis

of the newly committed changes

Purpose of the changes:

Update package versions in the lock file to their latest releases, ensuring compatibility and access to new features and bug fixes.

Detailed file changes

(dropdown):
  • In file uv.lock:
    • Updated 'cattrs' from version 26.1.0 to 26.2.0, with new source distribution and wheel URLs.
    • Updated 'click' from version 8.4.2 to 8.5.0, with new source distribution and wheel URLs.
    • Updated 'numpy' for version 2.5.2 to 2.5.3 under specific Python version conditions.
    • Updated 'coverage' from version 7.15.4 to 7.16.0, with new source distribution and wheel URLs.
    • Updated 'deepmerge' from version 3.0 to 3.0.1, with new source distribution and wheel URLs.
    • Updated 'fonttools' from version 4.63.0 to 4.64.0, with new source distribution and wheel URLs.
    • Updated 'griffelib' from version 2.2.0 to 2.3.0, with new source distribution and wheel URLs.
    • Updated 'hypothesis' from version 6.165.10 to 6.167.1, with new source distribution and wheel URLs.

Every paragraph across the site, the README and the changelog is now one
line. A newline inside a paragraph was never a line break the reader saw,
so the wrap column was a convention held by hand on every edit and lost on
every reflow; the rendered page is unchanged either way.

Nothing else moves. Fenced code keeps its own line breaks, and so do
headings, tables, list structure, mkdocstrings directives with the YAML
options block under them, and the HTML comments the documentation checker
reads. The site builds to the same HTML as before, byte for byte once the
whitespace outside a `<pre>` is collapsed, which is the whitespace a
browser collapses too.
The Releasing steps stopped at the GitHub Release, leaving the version on
`main` sitting at the number that just shipped, so a development checkout
was indistinguishable from the release. Step 7 bumps it to the next patch
as a development version, and says why `uv sync` belongs with the bump:
the format version is read from the installed metadata.

A paragraph after the steps says to move the patch and not the minor. The
minor is the format version both file headers carry, so bumping it in
advance stamps a version into every file written for the rest of the cycle
that the eventual release may refuse. It moves in the pull request that
changes the format, next to the migration that release registers.
@pullpo-for-slack

Copy link
Copy Markdown

AI Analysis

of the newly committed changes

Purpose of the changes:

The changes aim to improve the documentation of the QProgram's capabilities, serialization, and control flow mechanisms, enhancing clarity and accessibility for developers working with the system.

Improvements and suggestions

(dropdown):
  • In file docs/reference/qp-format.md / Top-level layout

Issue:
The explanation of the file format and its structure is somewhat convoluted and could benefit from clearer, more concise language.

Suggested solution:
Consider breaking down complex sentences and using bullet points for clarity. For example, list the types of declarations and their order in a clear format.

  • In file docs/developer/capability-protocol.md / Design choices

Issue:
The explanation of the capability surface and its components is dense and may overwhelm new developers.

Suggested solution:
Simplify the language and structure. Use subheadings or bullet points to clarify the roles of PlatformCapabilities, BusCapabilities, and default_bus_profile.

  • In file docs/guide/control-flow.md / Control flow section

Issue:
The description of control flow constructs is lengthy and could confuse readers.

Suggested solution:
Summarize the main points and provide examples to illustrate each construct. Consider using diagrams to visualize the control flow.

  • In file docs/guide/serialization.md / The four functions

Issue:
The explanation of the serialization functions lacks clarity on how they interrelate.

Suggested solution:
Add a flowchart or a diagram to illustrate the relationship between dumps, loads, save, and load. Also, provide examples of typical use cases for each function.

  • In file docs/guide/variables.md / Declaring variables

Issue:
The section on variable declarations is overly technical and may be difficult for beginners.

Suggested solution:
Provide a step-by-step guide on how to declare variables, including common pitfalls and examples of valid and invalid declarations.

Detailed file changes

(dropdown):
  • In file docs/reference/qp-format.md:

    • Revised the description of the .qp file format to clarify its purpose and structure.
    • Streamlined the explanation of how the format tracks the Python API.
    • Improved the section on top-level layout to better outline the order of declarations.
  • In file docs/developer/capability-protocol.md:

    • Added more detailed explanations of the PlatformCapabilities class and its fields.
    • Clarified the distinction between the per-bus and platform-wide capabilities.
  • In file docs/guide/control-flow.md:

    • Clarified the explanation of how control flow constructs operate within QProgram.
    • Included examples to illustrate the use of sweep, average, and conditional constructs.
  • In file docs/guide/serialization.md:

    • Improved the explanation of the serialization process and the functions involved.
    • Clarified the requirements and constraints for serialization, particularly regarding vendor operations.
  • In file docs/guide/variables.md:

    • Enhanced the section on declaring variables to include more examples and common errors.
    • Clarified the purpose of label, units, and description in variable declarations.

@fedonman fedonman changed the title Raise the numpy floor and list the project URLs one per line Raise the numpy floor, refresh the lock, and let the browser wrap the docs Sep 8, 2026
@pullpo-for-slack

Copy link
Copy Markdown

AI Analysis

of the newly committed changes

Purpose of the changes:

This commit introduces version 0.2.0 of the QProgram, adding significant functionality, improving documentation, and fixing various issues related to measurement and waveform processing.

Detailed file changes

(dropdown):
  • In file CHANGELOG.md:
    • Added eight worked example pages covering various aspects of the language, enhancing user guidance.
    • Introduced new plotting capabilities in QProgramResult.plot to visualize measurements with improved axis labeling.
    • Enhanced the handling of file format versions and migration processes to ensure backward compatibility.
    • Rewrote all documentation pages to align with the latest source code, improving clarity and accessibility.
    • Updated the default behavior of MeasurementSample.raw to prevent silent failures and improve error reporting.
    • Fixed issues with loads and dumps methods to ensure proper handling of document headers and parameters.

`towncrier build` renders the fifteen fragments under `changelog/` into a
`## 0.2.0` section and deletes them. The version needed no change: #42
already moved it to 0.2.0 mid-cycle, since the format version is derived
from it.

The rendered entries are then ordered by what a reader needs first rather
than by pull request number, so within each heading the changes to how the
library is used come before the documentation ones. A paragraph opens the
section with the one thing an 0.1.0 user has to know: a file written by
that release no longer loads, and files written from here on are carried
up by a migration instead.
@pullpo-for-slack

Copy link
Copy Markdown

AI Analysis

of the newly committed changes

Purpose of the changes:

This commit introduces version 0.2.0 of the QProgram library, implementing significant changes to file format compatibility, migration handling, and enhanced plotting functionalities, along with extensive documentation updates.

Detailed file changes

(dropdown):
  • In file CHANGELOG.md:
    • Introduces a new file format versioning system that aligns .qp and .wfl formats with the library version, preventing backward compatibility with older files.
    • Adds new features for loading files written against earlier format versions and registers migrations for syntax changes.
    • Enhances the QProgramResult.plot method to support multiple plotting styles and configurations based on measurement data.
    • Documents new example pages covering a variety of use cases and programming constructs within the library.
    • Implements stricter header version checks to ensure compatibility and prevent loading of files from later versions.
    • Fixes several issues related to document loading and profile registration to improve robustness.

@sonarqubecloud

sonarqubecloud Bot commented Sep 8, 2026

Copy link
Copy Markdown

@fedonman fedonman changed the title Raise the numpy floor, refresh the lock, and let the browser wrap the docs Prepare for v0.2.0, raise the numpy floor, refresh the lock, and let the browser wrap the docs Sep 8, 2026
@fedonman
fedonman merged commit 6bcef88 into main Sep 8, 2026
9 checks passed
@fedonman
fedonman deleted the packaging-metadata branch September 8, 2026 11:08
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