Skip to content

Release 3.1.0 - #174

Merged
isayev merged 1 commit into
mainfrom
release/3.1.0
Aug 21, 2026
Merged

isayev merged 1 commit into
mainfrom
release/3.1.0

Conversation

@isayev

@isayev isayev commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

Why now

Everything merged since 3.0.0 has been shipping under a version number that says 3.0.0. Verified against PyPI: auto3d-3.0.0 was uploaded 2026-08-04, is not yanked, and is the latest version there — so the API changes since then land on an installed base, not on nothing.

The semver departure, stated up front

3.1.0 is a minor version carrying breaking changes. Strict semver would make this a major release. A >=3.0,<4 or ~=3.0 pin will pick it up automatically.

The CHANGELOG now opens 3.1.0 with a warning block saying exactly that, naming Auto3D==3.0.0 as the pin to hold while migrating, and stating that no compatibility shims exist.

It also leads with the mitigating fact, because that decides whether most users are affected at all: the top-level API is unchanged. from Auto3D import main, smiles2mols, Auto3DOptions, calc_spe, calc_thermo, opt_geometry, create_model, ... all still resolve — the package root re-exports them lazily. Only code reaching into submodules breaks.

CHANGELOG consolidation

[Unreleased] became ## [3.1.0] - 2026-08-20, with a fresh empty [Unreleased] above it.

Seven section headings became four. Fixed, Added and Changed each appeared twice (lines 260/491, 395/483, 435/468) because two later waves appended their own sections rather than merging into the existing ones. Entries are preserved in document order within each merged section, and sections are now in Keep a Changelog's order.

The two packaging fixes are verified against a real artifact

Both were made during the layer move, and neither is covered by any test — so this build is the first thing that has ever checked either:

entry_points.txt   auto3d = Auto3D.presentation.auto3Dcli:cli
wheel payload      Auto3D/engines/models/ani2xt_no_repulsion.pt

Without them this release ships a broken auto3d command and a wheel with no ANI2xt checkpoint — with every gate green, because the suite runs from the source tree where both are fine regardless.

python -m build also confirms Version: 3.1.0, py.typed present, all six layer directories in the wheel, and 100 layered modules in the sdist. Artifacts were inspected and deleted, not committed.

publish.yml needs no change

It builds from pyproject.toml and publishes via trusted publishing, with no module path anywhere in it. That closes a gap I flagged during the layer move: it is the one workflow no CI run exercises, because it triggers only on a published release.

Not in this PR: CLAUDE.md

It is gitignored (.gitignore:135), so the file describing the project's current version and layout is local to one machine and cannot be updated here. Worth knowing before treating it as a shared record.

Verification

  • 1771 passed, 1 skipped, 74 deselected, randomized order.
  • ruff check and ruff format --check both clean.
  • Wheel and sdist built and inspected.

Not done here

Tagging and publishing. Creating the GitHub release is what triggers publish.yml and the PyPI upload, and PyPI never accepts a version number twice. That step is deliberately left for a human.

Everything merged since 3.0.0 shipped under a version number that said
3.0.0. PyPI has had 3.0.0 since 2026-08-04 (verified: uploaded, not yanked,
and the latest version there), so the API changes since then land on an
installed base rather than on nothing.

Version bumped to 3.1.0. Note this is a MINOR version carrying breaking
changes, which is a deliberate departure from semver: a `>=3.0,<4` or
`~=3.0` pin picks them up automatically. The CHANGELOG leads with a warning
block saying exactly that, naming `Auto3D==3.0.0` as the pin to hold while
migrating, and stating that no compatibility shims exist.

The warning also leads with the mitigating fact, because it decides whether
most users are affected at all: the TOP-LEVEL API is unchanged. `from Auto3D
import main, smiles2mols, Auto3DOptions, calc_spe, calc_thermo,
opt_geometry, create_model, ...` all still resolve, because the package root
re-exports them lazily. Only code reaching into submodules breaks.

CHANGELOG consolidated. `[Unreleased]` became `## [3.1.0] - 2026-08-20`,
with a fresh empty `[Unreleased]` above it. Seven section headings became
four: `Fixed`, `Added` and `Changed` each appeared TWICE, because two later
waves appended their own sections instead of merging into the existing ones.
Entries are preserved in document order within each merged section, and the
sections are now in Keep a Changelog's order.

THE TWO PACKAGING FIXES ARE NOW VERIFIED AGAINST A REAL ARTIFACT. Both were
made during the layer move and both are covered by no test, so this build is
the first thing that has ever checked either:

    entry_points.txt   auto3d = Auto3D.presentation.auto3Dcli:cli
    wheel payload      Auto3D/engines/models/ani2xt_no_repulsion.pt

Without them this release would have shipped a broken `auto3d` command and a
wheel with no ANI2xt checkpoint, with every gate green. `python -m build`
also confirms `Version: 3.1.0`, `py.typed` present, all six layer
directories in the wheel, and 100 layered modules in the sdist.

`publish.yml` needs no change: it builds from pyproject and publishes by
trusted publishing, with no module path anywhere in it. That closes the gap
flagged earlier -- it is the one workflow no CI run exercises, because it
triggers only on a published release.

Also updated: README's conda-forge comparison, which named 3.0.0 as the
version conda-forge lags behind.

NOT in this commit: CLAUDE.md. It is gitignored (.gitignore:135), so the
file describing the project's current version and layout is local to one
machine and cannot be updated here. Its copy on this machine now says 3.1.0
and carries the breaking-change note, but nothing propagates that -- worth
knowing before trusting it as a shared record.

Verification:
- 1771 passed, 1 skipped, 74 deselected, randomized order.
- ruff check and ruff format --check both clean.
- Wheel and sdist built and inspected; build artifacts not committed.
@isayev
isayev merged commit 2ae6aff into main Aug 21, 2026
5 checks passed
@isayev
isayev deleted the release/3.1.0 branch August 21, 2026 02:26
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