diff --git a/docs/plugins.rst b/docs/plugins.rst index f1c3037c..fad890e7 100644 --- a/docs/plugins.rst +++ b/docs/plugins.rst @@ -140,7 +140,7 @@ Execution and progress reporting .. autofunction:: ocrmypdf.pluginspec.get_executor -.. autofunction:: ocrmypdf.pluginspec.get_progress_bar +.. autofunction:: ocrmypdf.pluginspec.get_progressbar_class Applying special behavior before processing ------------------------------------------- diff --git a/src/ocrmypdf/_concurrent.py b/src/ocrmypdf/_concurrent.py index ea975bae..5882d962 100644 --- a/src/ocrmypdf/_concurrent.py +++ b/src/ocrmypdf/_concurrent.py @@ -107,8 +107,8 @@ class Executor(ABC): def setup_executor(plugin_manager) -> Executor: - pbar_class = plugin_manager.hook.get_progress_bar() - return plugin_manager.hook.get_executor(pbar_class=pbar_class) + pbar_class = plugin_manager.hook.get_progressbar_class() + return plugin_manager.hook.get_executor(progressbar_class=pbar_class) class SerialExecutor(Executor): diff --git a/src/ocrmypdf/_pipeline.py b/src/ocrmypdf/_pipeline.py index 30ab9751..0871aeba 100644 --- a/src/ocrmypdf/_pipeline.py +++ b/src/ocrmypdf/_pipeline.py @@ -726,7 +726,7 @@ def convert_to_pdfa(input_pdf: Path, input_ps_stub: Path, context: PdfContext): compression=options.pdfa_image_compression, pdfa_part=options.output_type[-1], # is pdfa-1, pdfa-2, or pdfa-3 progressbar_class=( - context.plugin_manager.hook.get_progress_bar() + context.plugin_manager.hook.get_progressbar_class() if options.progress_bar else None ), diff --git a/src/ocrmypdf/builtin_plugins/concurrency.py b/src/ocrmypdf/builtin_plugins/concurrency.py index 5bfc05b3..b58211e4 100644 --- a/src/ocrmypdf/builtin_plugins/concurrency.py +++ b/src/ocrmypdf/builtin_plugins/concurrency.py @@ -155,12 +155,12 @@ class StandardExecutor(Executor): @hookimpl -def get_executor(): - return StandardExecutor() +def get_executor(progressbar_class): + return StandardExecutor(pbar_class=progressbar_class) @hookimpl -def get_progress_bar(): +def get_progressbar_class(): return tqdm diff --git a/src/ocrmypdf/pluginspec.py b/src/ocrmypdf/pluginspec.py index ee4e8dc4..3ed8c4af 100644 --- a/src/ocrmypdf/pluginspec.py +++ b/src/ocrmypdf/pluginspec.py @@ -28,7 +28,7 @@ hookspec = pluggy.HookspecMarker('ocrmypdf') # pylint: disable=unused-argument -@hookspec +@hookspec(firstresult=True) def get_logging_console() -> Handler: """Returns a logging handler. Should be configured to handle progress bars.""" @@ -70,7 +70,7 @@ def check_options(options: Namespace) -> None: @hookspec(firstresult=True) -def get_executor() -> Executor: +def get_executor(progressbar_class) -> Executor: """Called to obtain an object that manages parallel execution. This may be used to replace OCRmyPDF's default parallel execution system @@ -92,7 +92,7 @@ def get_executor() -> Executor: @hookspec(firstresult=True) -def get_progress_bar(): +def get_progressbar_class(): """Called to obtain a class that can be used to create progress bars. The class should follow a tqdm-like protocol. Calling the class should return @@ -108,7 +108,7 @@ def get_progress_bar(): Here is how OCRmyPDF will use the progress bar: Example: - pbar_class = pm.hook.get_progress_bar() + pbar_class = pm.hook.get_progressbar_class() with pbar_class(**tqdm_kwargs) as pbar: ... pbar.update(1)