[Bug 2146447] Re: [MIR] python-rich-argparse

Ioanna Alifieraki 2146447 at bugs.launchpad.net
Tue Apr 7 11:51:41 UTC 2026


Review for Source Package: python-rich-argparse

[Summary]

python-rich-argparse is a fairly simple package which can be used to improve
the look and readability of argparse's help. The package is in good state,
however the latest release is in not packaged in ubuntu or debian.

MIR team ACK under the constraint to resolve the below listed
required TODOs and as much as possible having a look at the
recommended TODOs.

This does not need a security review.

List of specific binary packages to be promoted to main: python3-rich-argparse
Specific binary packages built, but NOT to be promoted to main: <None>

Notes:
Recommended TODOs:
1. The latest upstream release is 1.7.2, however the debian/ubuntu package is based on 1.6.0. 
   Could you please work with debian to bump to the latest upstream release?
2. The package should get a team bug subscriber before being promoted

[Rationale, Duplication and Ownership]
There is no other package in main providing the same functionality.
Openstack team is committed to own long term maintenance of this package.
The rationale given in the report seems valid and useful for Ubuntu.

[Dependencies]
OK:
- no other runtime Dependencies to MIR due to this
- no other build-time Dependencies with active code in the final binaries
  to MIR due to this
- no -dev/-debug/-doc packages that need exclusion
- No dependencies in main that are only superficially tested requiring
  more tests now.

Problems: None

[Embedded sources and static linking]
OK:
- no embedded source present
- no static linking
- does not have unexpected Built-Using entries
- not a go package, no extra constraints to consider in that regard
- not a rust package, no extra constraints to consider in that regard
- Does not include vendored code

Problems: None

[Security]
OK:
- history of CVEs does not look concerning
- does not run a daemon as root
- does not use webkit1,2
- does not use lib*v8 directly
- does not parse data formats (files [images, video, audio,
  xml, json, asn.1], network packets, structures, ...) from
  an untrusted source.
- does not expose any external endpoint (port/socket/... or similar)
- does not process arbitrary web content
- does not use centralized online accounts
- does not integrate arbitrary javascript into the desktop
- does not deal with system authentication (eg, pam), etc)
- does not deal with security attestation (secure boot, tpm, signatures)
- does not deal with cryptography (en-/decryption, certificates,
  signing, ...)
- this makes appropriate (for its exposure) use of established risk
  mitigation features (dropping permissions, using temporary environments,
  restricted users/groups, seccomp, systemd isolation features,
  apparmor, ...)

Problems: None

[Common blockers]
OK:
- does not FTBFS currently
- does have a test suite that runs at build time
  - test suite fails will fail the build upon error.
- does have a non-trivial test suite that runs as autopkgtest
- This does not need special HW for build or test
- no new python2 dependency
- Python package, but using dh_python

Problems: None

[Packaging red flags]
OK:
- Ubuntu does not carry a delta
- symbols tracking not applicable for this kind of code.
- debian/watch is present and looks ok (if needed, e.g. non-native)
- Upstream update history is good
- Debian/Ubuntu update history is sporadic
- promoting this does not seem to cause issues for MOTUs that so far
  maintained the package
- no massive Lintian warnings
- debian/rules is rather clean
- It is not on the lto-disabled list

Problems:
- the current release is not packaged

[Upstream red flags]
OK:
- no Errors/warnings during the build
- no incautious use of malloc/sprintf (the language has no direct MM)
- no use of sudo, gksu, pkexec, or LD_LIBRARY_PATH (usage is OK inside
  tests)
- no use of user 'nobody' outside of tests
- no use of setuid / setgid
- no important open bugs (crashers, etc) in Debian or Ubuntu
- no dependency on webkit, qtwebkit or libseed
- not part of the UI for extra checks
- no translation present, but none needed for this case (user visible)?

Problems: None

-- 
You received this bug notification because you are a member of Ubuntu
OpenStack, which is subscribed to the bug report.
https://bugs.launchpad.net/bugs/2146447

Title:
  [MIR] python-rich-argparse

Status in python-rich-argparse package in Ubuntu:
  Incomplete

Bug description:
  [Availability]
  The package python-rich-argparse is already in Ubuntu universe.
  The package python-rich-argparse builds for the architectures it is designed to work on.
  It currently builds and works for architectures: all (pure Python, arch: all)
  Link to package https://launchpad.net/ubuntu/+source/python-rich-argparse

  [Rationale]
  - The package python-rich-argparse is required in Ubuntu main for cmd2
  - The package python-rich-argparse will not generally be useful for a large part of
    our user base, but is important/helpful still because cmd2 3.x (in main)
    unconditionally imports rich_argparse at module level — cmd2 cannot function
    without it. cmd2 is pulled into main via the dependency chain:
    OpenStack clients → python3-cliff (main) → python3-cmd2 (main).
  - The package python-rich-argparse is a new runtime dependency of package cmd2 that
    we already support
  - There is no other/better way to solve this that is already in main or
    should go universe->main instead of this. rich-argparse is the only library
    providing rich-formatted argparse help output, and cmd2 upstream has adopted
    it as a hard dependency in the 3.x series.
  - This is the first time the package will be in main
  - The binary package python3-rich-argparse needs to be in main to satisfy
    cmd2's runtime Depends
  - All other binary packages built by python-rich-argparse should remain in universe
    (there are no other binary packages)
  - The package python-rich-argparse is required in Ubuntu main no later than
    Ubuntu 26.04 LTS (Resolute) due to the OpenStack Gazpacho dependency sync

  [Security]
  - No CVEs/security issues in this software in the past
  - no `suid` or `sgid` binaries
  - no executables in `/sbin` and `/usr/sbin`
  - Package does not install services, timers or recurring jobs
  - Security has been kept in mind and common isolation/risk-mitigation
    patterns are in place utilizing the following features:
    This is a pure Python library (1125 lines across 5 files) that only
    formats argparse help text using the rich library. It has no network
    access, no file system access beyond importing its own modules, no
    privilege escalation surface, and no use of subprocess or ctypes.
  - Packages does not open privileged ports (ports < 1024).
  - Package does not expose any external endpoints
  - Packages does not contain extensions to security-sensitive software
    (filters, scanners, plugins, UI skins, ...)

  [Quality assurance - function/usage]
  - The package works well right after install. It is a Python library
    imported by other packages — no configuration needed.

  [Quality assurance - maintenance]
  - The package is maintained well in Debian/Ubuntu/Upstream and does
    not have too many, long-term & critical, open bugs
    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/python-rich-argparse/+bug
    - Debian https://bugs.debian.org/cgi-bin/pkgreport.cgi?src=python-rich-argparse
    - Upstream https://github.com/hamdanal/rich-argparse/issues
  - The package does not deal with exotic hardware we cannot support

  [Quality assurance - testing]
  - The package runs a test suite on build time, if it fails
    it makes the build fail, link to build log
    https://launchpad.net/ubuntu/+source/python-rich-argparse/1.6.0-2
  - The package runs an autopkgtest (autopkgtest-pkg-pybuild), and is currently
    passing on all architectures (amd64, arm64, armhf, ppc64el, s390x)
  - The package does not have failing autopkgtests right now
  - This package is minimal and will be tested in a more wide reaching
    solution context via cmd2's own autopkgtests and the OpenStack CLI
    integration tests that exercise cmd2.

  [Quality assurance - packaging]
  - A mechanism to detect and fetch new upstream versions is present and works
    (debian/watch via pypi.debian.net)
  - debian/control defines a correct Maintainer field
    (Debian Python Team <team+python at tracker.debian.org>)
  - This package does not yield massive lintian Warnings, Errors
  - Please link to a recent build log of the package
    https://launchpad.net/ubuntu/+source/python-rich-argparse/1.6.0-2
  - Lintian overrides are not present
  - This package does not rely on obsolete or about to be demoted packages.
  - This package has no python2 or GTK2 dependencies
  - The package will not be installed by default
  - Packaging and build is easy, uses dh-sequence-python3 with
    pybuild-plugin-pyproject and hatchling. debian/rules is minimal (only
    sets PYBUILD_NAME).

  [UI standards]
  - Application is not end-user facing (does not need translation)

  [Dependencies]
  - Used check-mir to validate: the only runtime dependency is
    python3-rich (>= 11.0.0), which is already in main
    (source: rich, version 13.9.4-1.2 in resolute).
    All build dependencies are either in main or are build-only
    (pybuild-plugin-pyproject, python3-hatchling, python3-pytest — all acceptable
    in universe for build-only use).

  [Standards compliance]
  - This package correctly follows FHS and Debian Policy

  [Maintenance/Owner]
  - The owning team will be Ubuntu OpenStack and I have their acknowledgment for
    that commitment
  - The future owning team is not yet subscribed, but will subscribe to
    the package before promotion
  - This does not use static builds
  - This does not use vendored code
  - This package is not rust based
  - The package has not been built within the last 3 months in the archive,
    but it was built successfully in sbuild locally to confirm it still builds.
    Built with `env -u TERM -u COLORTERM sbuild -d resolute` to have sbuild behave
    like launchpad builders (where there's no pty / colors?)
  - Build link on launchpad: https://launchpad.net/ubuntu/+source/python-rich-argparse/1.6.0-2
  - This change will not impact other teams

  [Background information]
  The Package description explains the package well:
  "Rich help formatters for argparse and optparse — Format argparse and optparse
  help using rich. Improves the look and readability of argparse's help while
  requiring minimal changes to the code."
  Upstream Name is rich-argparse
  Link to upstream project https://github.com/hamdanal/rich-argparse
  This is a very small, pure-Python library (1125 lines total across 5 files,
  MIT licensed). It has a single runtime dependency (python3-rich, already in
  main) and is actively maintained upstream with regular releases. The MIR is
  needed because cmd2 3.x (synced from Debian for the OpenStack Gazpacho cycle)
  unconditionally depends on rich-argparse at runtime, and cmd2 is in main.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/python-rich-argparse/+bug/2146447/+subscriptions




More information about the Ubuntu-openstack-bugs mailing list