From e4fa9dbc8fe62f904dc98bbaf9353754b4c8d8e0 Mon Sep 17 00:00:00 2001 From: "James R. Barlow" Date: Sat, 13 Dec 2025 01:05:36 -0800 Subject: [PATCH] Drop obsolete subclass of ArgumentParser --- src/ocrmypdf/cli.py | 34 +--------------------------------- 1 file changed, 1 insertion(+), 33 deletions(-) diff --git a/src/ocrmypdf/cli.py b/src/ocrmypdf/cli.py index 0d61523e..f0d4430a 100644 --- a/src/ocrmypdf/cli.py +++ b/src/ocrmypdf/cli.py @@ -6,6 +6,7 @@ from __future__ import annotations import argparse +from argparse import ArgumentParser from collections.abc import Callable, Mapping from typing import Any, TypeVar @@ -55,39 +56,6 @@ def str_to_int(mapping: Mapping[str, int]): return _str_to_int -class ArgumentParser(argparse.ArgumentParser): - """Override parser's default behavior of calling sys.exit(). - - https://stackoverflow.com/questions/5943249/python-argparse-and-controlling-overriding-the-exit-status-code - - OCRmyPDF began as a CLI but eventually acquired an API. The API works inside out, - by synthesizing a command line argument. So we subclass the standard parser with - one that doesn't call sys.exit(). Obviously this is not the ideal way to do things - but it works for us. - """ - - def __init__(self, *args, **kwargs): - """Initialize the parser.""" - super().__init__(*args, **kwargs) - self._api_mode = False - - def enable_api_mode(self): - """Enable API mode. - - When set, the parser will not call sys.exit() on error. OCRmyPDF was originally - a command line program, but now it has an API. The API works by synthesizing - command line arguments. - """ - self._api_mode = True - - def error(self, message): - """Override the default argparse error behavior.""" - if not self._api_mode: - super().error(message) - return - raise ValueError(message) - - class LanguageSetAction(argparse.Action): """Manages a list of languages."""