Scott Sanderson
Scott Sanderson
> BtW, I really like your implementation of interfaces. Thanks!
hey @nicoddemus. The main reason I use subclassing here is that it allows me to guarantee that subclasses don't break interfaces. For example, if I write: ```python class SomeInterface(Interface): def...
I'd be open to a PR that adds a decorator-based API. I think the functionality you want would basically just require extracting the core logic of `ImplementsMeta.__new__` into a standalone...
Hmm. I think it's an interesting question whether interface should reject `BadFoo` in your example. The contract that you probably care about as a consumer of `IFoo` is that `do_async`...
> On a more theoretical point of view, async/await has been designed to easily recognize asynchronous blocks and synchronization points (otherwise generator with yield would have done the job fine...
Hi @isaaclok. Thanks for the feedback. I haven't used type annotations in a real project myself, so the current support for type annotations is a bit rudimentary. We currently just...
What `implements(IFace)` actually does under the hood is construct a new instance of an [`ImplementsMeta`](https://github.com/ssanderson/interface/blob/master/interface/interface.py#L274) [metaclass](https://docs.python.org/3/reference/datamodel.html#metaclasses), which verifies the the implementation of your interface at type construction time. One of...
> As I don't have the full picture on all the challenges faced, would it make sense to have new major releases (backward incompatible) to drop support of the old...
> Maybe that would be a good reason to drop Python 2.7 (and maybe 3.5 too) from AppVeyor pipelines. My hope in the relatively near term is to switch our...
@mickeydonkey the best place to look for examples on how the pipeline machinery works is the pipeline test suite, which lives in `tests/pipeline`. There isn't a great short answer to...