From 2e155c31bf42fe5c0a1efefdad1b49ece04d4fde Mon Sep 17 00:00:00 2001 From: "James R. Barlow" Date: Thu, 1 Apr 2021 16:30:42 -0700 Subject: [PATCH] Ensure builtin module registration is deterministic --- src/ocrmypdf/_plugin_manager.py | 4 +++- src/ocrmypdf/builtin_plugins/__init__.py | 4 ++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/ocrmypdf/_plugin_manager.py b/src/ocrmypdf/_plugin_manager.py index 76e12bd7..0cd69673 100644 --- a/src/ocrmypdf/_plugin_manager.py +++ b/src/ocrmypdf/_plugin_manager.py @@ -67,7 +67,9 @@ class OcrmypdfPluginManager(pluggy.PluginManager): # 1. Register builtins if self.__builtins: - for module in pkgutil.iter_modules(ocrmypdf.builtin_plugins.__path__): + for module in sorted( + pkgutil.iter_modules(ocrmypdf.builtin_plugins.__path__) + ): name = f'ocrmypdf.builtin_plugins.{module.name}' module = importlib.import_module(name) self.register(module) diff --git a/src/ocrmypdf/builtin_plugins/__init__.py b/src/ocrmypdf/builtin_plugins/__init__.py index 61f9f6d6..05d8c70e 100644 --- a/src/ocrmypdf/builtin_plugins/__init__.py +++ b/src/ocrmypdf/builtin_plugins/__init__.py @@ -3,3 +3,7 @@ # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. + +# This file exists only mark builtin_plugins as a package. +# The plugin manager will not load it, so anything defined here may not be +# processed as a module.