diff --git a/src/py-opentimelineio/opentimelineio/console/otioconvert.py b/src/py-opentimelineio/opentimelineio/console/otioconvert.py index d5828acb3..a44890582 100755 --- a/src/py-opentimelineio/opentimelineio/console/otioconvert.py +++ b/src/py-opentimelineio/opentimelineio/console/otioconvert.py @@ -157,16 +157,11 @@ def _parsed_args(): if result.version: print(f"OpenTimelineIO version: {otio.__version__}") - if pkg_resources: - pkg_resource_plugins = list( - pkg_resources.iter_entry_points("opentimelineio.plugins") - ) - if pkg_resource_plugins: - print("Plugins from pkg_resources:") - for plugin in pkg_resource_plugins: - print(f" {plugin.dist}") - else: - print("No pkg_resource plugins installed.") + entry_points = otio.plugins.manifest.plugin_entry_points() + if entry_points: + print("Plugins from installed packages:") + for plugin in entry_points: + print(f" {plugin.dist.name} {plugin.dist.version}") parser.exit() if not result.input: diff --git a/src/py-opentimelineio/opentimelineio/console/otiopluginfo.py b/src/py-opentimelineio/opentimelineio/console/otiopluginfo.py index ffcd1fb7f..804a66df6 100644 --- a/src/py-opentimelineio/opentimelineio/console/otiopluginfo.py +++ b/src/py-opentimelineio/opentimelineio/console/otiopluginfo.py @@ -8,13 +8,8 @@ import argparse import fnmatch import textwrap -import opentimelineio as otio -# on some python interpreters, pkg_resources is not available -try: - import pkg_resources -except ImportError: - pkg_resources = None +import opentimelineio as otio OTIO_PLUGIN_TYPES = ['all'] + otio.plugins.manifest.OTIO_PLUGIN_TYPES @@ -68,7 +63,7 @@ def _parsed_args(): default=False, action="store_true", help=( - "Print the otio and pkg_resource installed plugin version " + "Print the otio and installed plugin package version " "information to the commandline." ), ) @@ -183,16 +178,11 @@ def main(): if args.version: print(f"OpenTimelineIO version: {otio.__version__}") - if pkg_resources: - pkg_resource_plugins = list( - pkg_resources.iter_entry_points("opentimelineio.plugins") - ) - if pkg_resource_plugins: - print("Plugins from pkg_resources:") - for plugin in pkg_resource_plugins: - print(f" {plugin.dist}") - else: - print("No pkg_resource plugins installed.") + entry_points = otio.plugins.manifest.plugin_entry_points() + if entry_points: + print("Plugins from installed packages:") + for plugin in entry_points: + print(f" {plugin.dist.name} {plugin.dist.version}") # list the loaded manifests print("Manifests loaded:") diff --git a/src/py-opentimelineio/opentimelineio/plugins/manifest.py b/src/py-opentimelineio/opentimelineio/plugins/manifest.py index 07a3de821..27c3f4f62 100644 --- a/src/py-opentimelineio/opentimelineio/plugins/manifest.py +++ b/src/py-opentimelineio/opentimelineio/plugins/manifest.py @@ -32,6 +32,21 @@ ] +def plugin_entry_points(): + """Returns the list of entry points for all available OpenTimelineIO + plugins. + """ + try: + entry_points = metadata.entry_points(group='opentimelineio.plugins') + except TypeError: + # For python <= 3.9 + entry_points = metadata.entry_points().get( + 'opentimelineio.plugins', [] + ) + + return entry_points + + def manifest_from_file(filepath): """Read the .json file at filepath into a :py:class:`Manifest` object.""" @@ -247,11 +262,7 @@ def load_manifest(): result.extend(manifest_from_file(json_path)) if not os.environ.get("OTIO_DISABLE_ENTRYPOINTS_PLUGINS"): - try: - entry_points = metadata.entry_points(group='opentimelineio.plugins') - except TypeError: - # For python <= 3.9 - entry_points = metadata.entry_points().get('opentimelineio.plugins', []) + entry_points = plugin_entry_points() for plugin in entry_points: plugin_name = plugin.name