Reno: Release Notes Manager
Reno is a release notes manager designed for high-throughput, distributed development teams. It uses Git to store release notes alongside the code, facilitating detailed and accurate notes, peer review, and easy back-porting. It organizes notes into logical groups (features, bug fixes, known issues) and integrates with Sphinx for automated documentation builds. The current version is 4.1.0, with releases tied to the OpenStack development cycle, typically several times a year.
Common errors
-
reno.exceptions.NoNotesFound: No notes found in repository
cause This error occurs when `reno` cannot find any release note fragments in the expected location (typically `releasenotes/notes/`) or for the specified branch/version. This can happen if `reno init` was not run, no notes have been created, or the branch specified does not contain any `reno` notes.fixEnsure `reno init` has been executed in your repository. Create a new note using `reno new <note-name> --type <type>`. Verify that you are on the correct Git branch or that the `reno.conf` settings for `branch` are correct. -
Error: unrecognized arguments: --type bugfix
cause This typically means you are using an older version of `reno` where the `--type` argument for `reno new` might not have been introduced or had a different syntax. Alternatively, there might be a typo in the command.fixUpdate `reno` to the latest version (`pip install --upgrade reno`). Check the documentation for your specific `reno` version regarding `reno new` command-line arguments. The standard is `reno new <name> --type <category>`. -
TypeError: __init__() got an unexpected keyword argument 'encoding'
cause This error indicates that you are attempting to use the `encoding` configuration option with a version of `reno` that does not support it. The `encoding` option was added in `reno` 3.2.0.fixUpgrade `reno` to version 3.2.0 or newer: `pip install --upgrade reno`. If upgrading is not an option, remove the `encoding` setting from your `reno.conf` file.
Warnings
- gotcha Reno stores release notes as individual files in a special directory within your Git repository. Directly editing the generated release notes document (e.g., after `reno report`) will cause inconsistencies with the source notes. Always edit individual note files.
- breaking Older versions of `reno` (prior to 3.x) had different command-line arguments and configuration file structures. Upgrading might require adjusting your CI/CD pipelines and `reno.conf` files.
- gotcha When `reno` scans for notes, it may leave open `dulwich.repo.Repo` file handles if not properly closed. This can lead to resource exhaustion in long-running processes or continuous integration environments.
Install
-
pip install reno
Imports
- Config
import reno.Config
from reno.config import Config
- Scanner
import reno.Scanner
from reno.scanner import Scanner
- Loader
import reno.Loader
from reno.loader import Loader
Quickstart
import os from reno.config import Config from reno.main import setup_logging, main # Simulate command-line arguments and environment # For a real application, these would come from sys.argv or direct configuration # os.environ['RENO_DEBUG'] = '1' # Initialize logging for reno output setup_logging() # Example: Setting up a reno repository (usually done once via 'reno init') # This is a conceptual quickstart; reno is primarily a CLI tool. # To actually run commands, you'd typically invoke the 'reno' CLI. # Example for generating release notes (conceptually): # config = Config() # config.parse_args(['reno', 'new', 'my-first-note', '--type', 'feature']) # main(config)