chore: release 1.0.0 - #32
Merged
Merged
Conversation
Closes the changelog, declares the library stable, and replaces the committed keyword documentation with a published, versioned site. The version becomes 1.0.0 and the classifier Production/Stable. The README now carries the promise that makes the classifier mean something: keyword names, argument names and their order do not change within 1.x, new arguments are only added at the end with defaults, and the rule model - how patterns match, in what order matching rules apply, what times means - is part of that promise rather than only the signatures. It also says what is not covered, so nobody has to guess: module layout, class names and anything with a leading underscore. A migration table from 0.3.0 sits next to it, because 1.0.0 renamed every rule keyword once and a reader arriving from PyPI should not have to reconstruct that from the changelog. Documentation: - docs/MitmLibraryKeywords.html is deleted. A rendered libdoc page carries its generation time, the absolute path of the machine that produced it and the Robot Framework and Python versions used, so a committed copy cannot be compared against a fresh one without normalising all of that away. That was tried twice and failed three release attempts before being removed, which left a file nothing regenerated. - A docs workflow generates it instead and publishes to gh-pages: one directory per release, /dev for main, /latest for the newest release, and the bare MitmLibraryKeywords.html kept where it is because pyproject.toml, the README and the metadata of every already published release point at it. - Released versions are never rebuilt, so a page keeps describing the version it was generated from even after mitmproxy and Robot Framework move on. - tools/build_docs_index.py renders the landing page and maintains the version list. It lives in a module rather than in the workflow so it can be tested, which it is: fifteen tests, including that 1.10.0 is newer than 1.9.0 and that publishing main twice does not add two entries. Releases: - The release workflow now creates the GitHub release, taking its notes from the changelog section for that version and attaching the built artefacts. It runs after publishing, so a release is never announced for a version that failed to reach PyPI, and it fails outright if the changelog has no section for the tag. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The last of the ten PRs. Closes the changelog, declares the library stable, and replaces the committed keyword documentation with a published, versioned site.
Version and promise
Version becomes
1.0.0, classifier becomesDevelopment Status :: 5 - Production/Stable.The README now carries the promise that makes the classifier mean something: keyword names, argument names and their order will not change within 1.x; new arguments are only added at the end with defaults; and the rule model is part of the promise, not just the signatures — how patterns match, the order in which matching rules apply, and what
timesmeans. It also states what is not covered, so nobody has to guess: module layout, class names, and anything with a leading underscore.A migration table from 0.3.0 sits beside it, since 1.0.0 renamed every rule keyword once and a reader arriving from PyPI should not have to reconstruct that from the changelog.
Documentation
docs/MitmLibraryKeywords.htmlis deleted. A rendered libdoc page embeds its generation time, the absolute path of the machine that produced it, and the Robot Framework and Python versions — so a committed copy cannot be diffed against a fresh one without normalising all of that away. That was attempted twice and failed three 0.3.0 release attempts before being removed, which left a file nothing regenerated.A
docsworkflow generates and publishes togh-pagesinstead:Released versions are never rebuilt, so a page keeps describing the version it was generated from even after mitmproxy and Robot Framework move on.
tools/build_docs_index.pyrenders the landing page and maintains the version list. It is a module rather than inline workflow script so it can be tested — 15 tests, including that1.10.0is newer than1.9.0(text sorting gets that wrong), that publishingmaintwice does not add two entries, and that a version name from a tag is HTML-escaped.Releases
The release workflow now creates the GitHub release, taking its notes from the changelog section for that version and attaching the built artefacts. It runs after publishing, so a release is never announced for a version that failed to reach PyPI, and it fails outright if the changelog has no section matching the tag.
I also created the missing v0.3.0 release retroactively — the tag and the PyPI release existed but no GitHub release did: https://github.com/MobyNL/robotframework-mitmlibrary/releases/tag/v0.3.0
One manual step for you
GitHub Pages must be switched from "deploy from
main,/docsfolder" to "deploy fromgh-pages,/root" in repository settings. The published URL does not change. Do it after merging, once the firstgh-pagescommit exists, so the site is never briefly empty.Verification
ruff check .,robocop check atestandmypyclean.pytest: 254 passed, 97.71% coverage. The changelog-extraction step and the index generator were both run locally against the real changelog.🤖 Generated with Claude Code