D'oh. I misunderstood. I thought the implementing class had to state the
interface(s) it was implementing.

OK cool, I'll change the plugin code to use these style interfaces on
Monday.

In the meantime it might make sense to merge this so you can start building
some front end stuff?

In deploystream/providers/source_code_control.py:

> @@ -0,0 +1,24 @@
> +from deploystream.providers.base import ProviderPluginReader
> +
> +
> +class SourceCodeControlPlugin(ProviderPluginReader):

This is precisely what Zope interfaces can be used for ;)

You can programatically verify implementation of interfaces even if the
users don't explicitly declare them:
https://gist.github.com/txels/5019775

This may give us the best of both worlds, our users need not explicitly
declare interfaces (although they are free to use them as a tool to check
for compliance). Internally we can use them to formally document and verify
plugins.

—
Reply to this email directly or view it on
GitHub<https://github.com/pretenders/deploystream/pull/1/files#r3126682>.