Plugin architecture: Adding new checks is easy. Parseable output: Jump to error location in your editor. Small: Just one Python file, requires only stdlib. You can ...
types.SimpleNamespace supports copy.replace() (gh-109174), but optparse.Values, which holds parsed option values as attributes, does not. I propose to support it: copy.replace(values, verbose=True) ...