From 84239383ca741d9c10e1233473e55f24aaf42bd3 Mon Sep 17 00:00:00 2001 From: "Karl O. Pinc" Date: Sat, 27 Jun 2020 18:02:44 -0500 Subject: [PATCH] Add plugin support --- src/pgwui_common/plugin.py | 32 +++++++++++++++++++++++++ tests/test_plugin.py | 48 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 src/pgwui_common/plugin.py create mode 100644 tests/test_plugin.py diff --git a/src/pgwui_common/plugin.py b/src/pgwui_common/plugin.py new file mode 100644 index 0000000..4577223 --- /dev/null +++ b/src/pgwui_common/plugin.py @@ -0,0 +1,32 @@ +# Copyright (C) 2020 The Meme Factory, Inc. http://www.karlpinc.com/ + +# This file is part of PGWUI_Common. +# +# This program is free software: you can redistribute it and/or +# modify it under the terms of the GNU Affero General Public License +# as published by the Free Software Foundation, either version 3 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public +# License along with this program. If not, see +# . +# + +# Karl O. Pinc + +'''Plugin support library for PGWUI +''' + +import pkg_resources + + +def find_pgwui_components(): + '''Return list of all pgwui component names as strings + ''' + return [entry_point.resolve().__name__ for entry_point in + pkg_resources.iter_entry_points('pgwui.components')] diff --git a/tests/test_plugin.py b/tests/test_plugin.py new file mode 100644 index 0000000..4ddc91f --- /dev/null +++ b/tests/test_plugin.py @@ -0,0 +1,48 @@ +# Copyright (C) 2020 The Meme Factory, Inc. http://www.karlpinc.com/ + +# This file is part of PGWUI_Common. +# +# This program is free software: you can redistribute it and/or +# modify it under the terms of the GNU Affero General Public License +# as published by the Free Software Foundation, either version 3 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public +# License along with this program. If not, see +# . +# + +# Karl O. Pinc + +from pgwui_common import plugin + + +# find_pgwui_components() + +def test_find_pgwui_components(monkeypatch): + '''Returns list of entry points via iter_entry_points() + ''' + entry_points = ['a', 'b', 'c'] + + class MockEntryPoint(): + def __init__(self, val): + self.__name__ = val + + def resolve(self): + return self + + class MockPkgResources(): + def iter_entry_points(*args): + return [MockEntryPoint(name) for name in entry_points] + + monkeypatch.setattr( + plugin, 'pkg_resources', MockPkgResources()) + + result = plugin.find_pgwui_components() + + assert result == entry_points -- 2.34.1