{"library":"reno","title":"Reno: Release Notes Manager","description":"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.","language":"python","status":"active","last_verified":"Sun May 17","install":{"commands":["pip install reno"],"cli":{"name":"reno","version":"usage: reno [-h] [-v] [-q] [--rel-notes-dir RELNOTESDIR]"}},"imports":["from reno.config import Config","from reno.scanner import Scanner","from reno.loader import Loader"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import os\nfrom reno.config import Config\nfrom reno.main import setup_logging, main\n\n# Simulate command-line arguments and environment\n# For a real application, these would come from sys.argv or direct configuration\n# os.environ['RENO_DEBUG'] = '1'\n\n# Initialize logging for reno output\nsetup_logging()\n\n# Example: Setting up a reno repository (usually done once via 'reno init')\n# This is a conceptual quickstart; reno is primarily a CLI tool.\n# To actually run commands, you'd typically invoke the 'reno' CLI.\n# Example for generating release notes (conceptually):\n# config = Config()\n# config.parse_args(['reno', 'new', 'my-first-note', '--type', 'feature'])\n# main(config)","lang":"python","description":"Reno is primarily a command-line interface (CLI) tool for managing release notes within a Git repository. The Python API is mostly for internal use or advanced integrations. A typical workflow involves `reno init` to set up the repository, `reno new` to create new note fragments, and `reno report` or `reno lint` to process them. The quickstart here shows how to import core components programmatically, though direct CLI usage is more common. To use `reno` effectively, consult its command-line documentation.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-17","installed_version":"4.1.0","pypi_latest":"4.1.0","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":2.9,"avg_import_s":0.26,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"reno","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.19,"mem_mb":4.7,"disk_size":"28.5M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"reno","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.8,"import_time_s":0.13,"mem_mb":4.7,"disk_size":"31M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"reno","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.37,"mem_mb":5.5,"disk_size":"32.6M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"reno","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.7,"import_time_s":0.35,"mem_mb":5.5,"disk_size":"36M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"reno","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.29,"mem_mb":6,"disk_size":"32.5M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"reno","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3,"import_time_s":0.35,"mem_mb":6,"disk_size":"36M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"reno","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.26,"mem_mb":6,"disk_size":"32.3M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"reno","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3.1,"import_time_s":0.28,"mem_mb":6,"disk_size":"35M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"reno","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.2,"mem_mb":4.6,"disk_size":"27.2M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"reno","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3.1,"import_time_s":0.14,"mem_mb":4.6,"disk_size":"30M"}]}}