From brett at python.org Thu Dec 3 20:27:16 2015 From: brett at python.org (Brett Cannon) Date: Fri, 04 Dec 2015 01:27:16 +0000 Subject: [stdlib-sig] Where should be put ABCs? Message-ID: In http://bugs.python.org/issue25609 I said I wanted an ABC for context managers and a matching entry in typing. I originally suggested putting it in collections.abc but Raymond Hettinger pointed out that it doesn't really belong there (along with a bunch of other ABCs like Callable and Awaitable). So I opened http://bugs.python.org/issue25637 to discuss this, but I realize maybe this SIG is a better place to have a real discussion. The options I see are: 1. Ignore Raymond's objection and put it in collections.abc 2. Stick it in contextlib 1. Directly 2. In a new contextlib.abc submodule 3. Stick in abc 1. Directly 2. In some new subclass like abc.interfaces Do people have any thoughts on this? Whatever decision we make in this instance should probably apply to the other misplaced ABCs in collections.abc (e.g., should Callable go into functools somehow, into abc?). Yury Selivanov voted for putting them in abc directly since having to always try and find a proper module to put the abc might not always work, and so putting the concrete interface ABCs that directly define what Python's syntactic sugar and interpreter rely on made sense. Terry Reedy even suggested that collections.abc was a mistake and should have been made abc.collections (which wouldn't be hard due to how all the relevant code for collections.abc is in Lib/_collection_abc.py and hence already in an odd place). I'm a little partial to putting the ABCs in relevant modules like functools and contextlib, but otherwise I think abc makes sense. -------------- next part -------------- An HTML attachment was scrubbed... URL: From guido at python.org Thu Dec 3 20:35:45 2015 From: guido at python.org (Guido van Rossum) Date: Thu, 3 Dec 2015 17:35:45 -0800 Subject: [stdlib-sig] Where should be put ABCs? In-Reply-To: References: Message-ID: I think putting the context manager ABC in contextlib is the right thing. However I detest functools and I really don't think Callable belongs there. It's been in collections.abc since it was introduced AFAIK, and it should just be grandfathered in. If I had to pick a better place for it I'd vote for (plain) abc, since that stores fundamental types. IMO Callable is a lot more fundamental than a context manager (even though both have direct interpreter support). On Thu, Dec 3, 2015 at 5:27 PM, Brett Cannon wrote: > In http://bugs.python.org/issue25609 I said I wanted an ABC for context > managers and a matching entry in typing. I originally suggested putting it > in collections.abc > but Raymond > Hettinger pointed out that it doesn't really belong there (along with a > bunch of other ABCs like Callable and Awaitable). > > So I opened http://bugs.python.org/issue25637 to discuss this, but I > realize maybe this SIG is a better place to have a real discussion. The > options I see are: > > 1. Ignore Raymond's objection and put it in collections.abc > 2. Stick it in contextlib > > 1. Directly > 2. In a new contextlib.abc submodule > 3. Stick in abc > 1. Directly > 2. In some new subclass like abc.interfaces > > Do people have any thoughts on this? Whatever decision we make in this > instance should probably apply to the other misplaced ABCs in > collections.abc (e.g., should Callable go into functools somehow, into > abc?). > > Yury Selivanov voted for putting them in abc directly since having to > always try and find a proper module to put the abc might not always work, > and so putting the concrete interface ABCs that directly define what > Python's syntactic sugar and interpreter rely on made sense. Terry Reedy > even suggested that collections.abc was a mistake and should have been made > abc.collections (which wouldn't be hard due to how all the relevant code > for collections.abc is in Lib/_collection_abc.py and hence already in an > odd place). > > I'm a little partial to putting the ABCs in relevant modules like > functools and contextlib, but otherwise I think abc makes sense. > > _______________________________________________ > stdlib-sig mailing list > stdlib-sig at python.org > https://mail.python.org/mailman/listinfo/stdlib-sig > > -- --Guido van Rossum (python.org/~guido) -------------- next part -------------- An HTML attachment was scrubbed... URL: