[Python-ideas] Adding collections.abc.Ordered
Guido van Rossum
guido at python.org
Mon Nov 9 11:29:21 EST 2015
Well, that would still defeat the purpose, wouldn't it? The items are no
more ordered than the headers dict itself. Also, items() doesn't return a
sequence -- it's an ItemsView (which inherits from Set) and presumably it's
not Ordered.
I guess my question is not so much how to prevent getting an exception --
I'm trying to tease out what the right order for the headers would be. Or
perhaps I'm just trying to understand what the code is doing (the snippet
shown mostly looks like bad code to me).
On Mon, Nov 9, 2015 at 12:03 AM, Ram Rachum <ram at rachum.com> wrote:
> I'm not Andrew, but I'm guessing simply writing
> `OrderedDict(headers.items())`.
>
> On Mon, Nov 9, 2015 at 6:28 AM, Guido van Rossum <guido at python.org> wrote:
>
>> So if OrderedDict had always rejected construction from a dict, how would
>> you have written this?
>>
>>
>> On Sunday, November 8, 2015, Andrew Barnert via Python-ideas <
>> python-ideas at python.org> wrote:
>>
>>> On Nov 8, 2015, at 14:10, Serhiy Storchaka <storchaka at gmail.com> wrote:
>>> >
>>> >> On 08.11.15 23:12, Sjoerd Job Postmus wrote:
>>> >> On 8 Nov 2015, at 20:06, Amir Rachum <amir at rachum.com
>>> >> <mailto:amir at rachum.com>> wrote:
>>> >>> As part of BasicStruct I intend to allow the use of mapping types as
>>> >>> __slots__, with the semantics of default values..
>>> >>> So it'll look something like this:
>>> >>>
>>> >>> class Point(BasicStruct):
>>> >>> __slots__ = {'x': 5, 'y': 7}
>>> >>
>>> >> So instead they'll write
>>> >> __slots__ = OrderedDict({'x': 5, 'y': 7})
>>> >> Causing the same issues?
>>> >
>>> > Perhaps OrderedDict should reject unordered sources. Hey, here is yet
>>> one use case!
>>>
>>> I've maintained code that does this:
>>>
>>> self.headers = OrderedDict(headers)
>>> self.origheaders = len(headers)
>>>
>>> … so it can later do this:
>>>
>>> altheaders = list(self.headers.items())[self.origheaders:]
>>>
>>> Not a great design, but one that exists in the wild, and would be broken
>>> by OrderedDict not allowing a dict as an argument.
>>>
>>> Also, this wouldn't allow creating an OrderedDict from an empty dict
>>> (which seems far less stupid, but I didn't lead with it because I can't
>>> remember seeing it in real code).
>>>
>>> _______________________________________________
>>> Python-ideas mailing list
>>> Python-ideas at python.org
>>> https://mail.python.org/mailman/listinfo/python-ideas
>>> Code of Conduct: http://python.org/psf/codeofconduct/
>>
>>
>>
>> --
>> --Guido (mobile)
>>
>> _______________________________________________
>> Python-ideas mailing list
>> Python-ideas at python.org
>> https://mail.python.org/mailman/listinfo/python-ideas
>> Code of Conduct: http://python.org/psf/codeofconduct/
>>
>
>
--
--Guido van Rossum (python.org/~guido)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20151109/109cf282/attachment.html>
More information about the Python-ideas
mailing list