Issues with Composition import

Trying to import the composition type as follows in my plugin_setup.py here

When I do that, I get the following error

(q2-gneiss) tests-MacBook-Pro-4:q2-gneiss mortonjt$ qiime dev refresh-cache
QIIME is caching your current deployment for improved performance. This may take a few moments and should only happen once per deployment.
Traceback (most recent call last):
  File "/Users/mortonjt/miniconda3/envs/q2-gneiss/bin/qiime", line 6, in <module>
    sys.exit(q2cli.__main__.qiime())
  File "/Users/mortonjt/miniconda3/envs/q2-gneiss/lib/python3.5/site-packages/click/core.py", line 716, in __call__
    return self.main(*args, **kwargs)
  File "/Users/mortonjt/miniconda3/envs/q2-gneiss/lib/python3.5/site-packages/click/core.py", line 696, in main
    rv = self.invoke(ctx)
  File "/Users/mortonjt/miniconda3/envs/q2-gneiss/lib/python3.5/site-packages/click/core.py", line 1060, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/Users/mortonjt/miniconda3/envs/q2-gneiss/lib/python3.5/site-packages/click/core.py", line 1060, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/Users/mortonjt/miniconda3/envs/q2-gneiss/lib/python3.5/site-packages/click/core.py", line 889, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/Users/mortonjt/miniconda3/envs/q2-gneiss/lib/python3.5/site-packages/click/core.py", line 534, in invoke
    return callback(*args, **kwargs)
  File "/Users/mortonjt/miniconda3/envs/q2-gneiss/lib/python3.5/site-packages/q2cli-0.0.6-py3.5.egg/q2cli/dev.py", line 55, in refresh_cache
  File "/Users/mortonjt/miniconda3/envs/q2-gneiss/lib/python3.5/site-packages/q2cli-0.0.6-py3.5.egg/q2cli/cache.py", line 76, in refresh
  File "/Users/mortonjt/miniconda3/envs/q2-gneiss/lib/python3.5/site-packages/q2cli-0.0.6-py3.5.egg/q2cli/cache.py", line 103, in _get_cached_state
  File "/Users/mortonjt/miniconda3/envs/q2-gneiss/lib/python3.5/site-packages/q2cli-0.0.6-py3.5.egg/q2cli/cache.py", line 205, in _cache_current_state
  File "/Users/mortonjt/miniconda3/envs/q2-gneiss/lib/python3.5/site-packages/q2cli-0.0.6-py3.5.egg/q2cli/cache.py", line 229, in _get_current_state
  File "/Users/mortonjt/miniconda3/envs/q2-gneiss/lib/python3.5/site-packages/qiime-2.0.6-py3.5.egg/qiime/sdk/plugin_manager.py", line 32, in __new__
    self._init()
  File "/Users/mortonjt/miniconda3/envs/q2-gneiss/lib/python3.5/site-packages/qiime-2.0.6-py3.5.egg/qiime/sdk/plugin_manager.py", line 46, in _init
    plugin = entry_point.load()
  File "/Users/mortonjt/miniconda3/envs/q2-gneiss/lib/python3.5/site-packages/setuptools-27.2.0-py3.5.egg/pkg_resources/__init__.py", line 2258, in load
  File "/Users/mortonjt/miniconda3/envs/q2-gneiss/lib/python3.5/site-packages/setuptools-27.2.0-py3.5.egg/pkg_resources/__init__.py", line 2264, in resolve
  File "/Users/mortonjt/Dropbox/UCSD/research/q2/q2-gneiss/q2_gneiss/plugin_setup.py", line 14, in <module>
    from q2_composition import Composition
ImportError: cannot import name 'Composition'

Note that I do have the plugin installed

(q2-gneiss) tests-MacBook-Pro-4:q2-gneiss mortonjt$ qiime info
System versions
Python version: 3.5.2
QIIME version: 2.0.6
q2cli version: 0.0.6

Installed plugins
composition 0.0.1
feature-table 0.0.6
types 0.0.6

Application config directory
/Users/mortonjt/Library/Application Support/q2cli

Getting help
To get help with QIIME 2, visit https://qiime2.org

Citing QIIME 2
If you use QIIME 2 in any published work, you should cite QIIME 2 and the plugins that you used. To display the citations for QIIME and all installed plugins, run:

  qiime info --citations

If I’m understanding this correctly, once a type is defined and registered, it should be importable correct?
The composition type is defined here in case it is relevant.

Composition would need to be accessible in q2_composition/__init__.py to be importable in this way, but it’s currently only defined in q2_composition/plugin_setup.py. This was probably just an oversight in q2_composition. See how q2_types handles this in its __init__.py. You should probably update q2_composition, but in the meantime you can import as follows:

from q2_composition.plugin_setup import Composition

1 Like