common-workflow-language / common-workflow-language/cwltool

support plugins for third party CWL registry APIs, etc

Open
#314 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
376
Forks
255
Avg merge
2d 7h
Merged PRs (30d)
12

Description

After #201 gets merged,

Starting with `cwltool.resolver`:
- [ ] adds support for resolver plugins using the `cwltool.resolver` [entry point](https://setuptools.readthedocs.io/en/latest/pkg_resources.html#entry-points)
- [ ] The GA4GH tool registry API resolvers in #201 is refactored to its own package which advertises compatibility using the `cwltool.resolver` [entry point](https://setuptools.readthedocs.io/en/latest/pkg_resources.html#entry-points)
- [ ] Once the above is working and tested, dependencies will be added to `cwltool` as named [extras](https://setuptools.readthedocs.io/en/latest/setuptools.html#declaring-extras-optional-features-with-their-own-dependencies) so that users can install them easier. Example: `pip install cwltool[ga4gh_registry, bioshadock]`

- [ ] Document this general pattern
- [ ] Document other parts of `cwltool` that could be extended with external plugins:
- [ ] support for object stores
- [ ] dependency resolution, see #214
- [ ] others places?

Contributor guide

Open the contributing guide

Research direction

Start with cwltool.resolver and review the dependency on #201 before defining the resolver entry-point behavior. Then examine how the GA4GH registry resolvers, optional extras, object stores, and dependency resolution in #214 fit the proposed plugin pattern. Done means the plugin support is tested, dependencies can be installed as named extras, and the general pattern and extension points are documented.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
developer-experience, tooling
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.