[python-uk] memoize & ordering of kwargs.items()
René Dudfield
renesd at gmail.com
Fri Nov 11 10:34:37 CET 2011
On Fri, Nov 11, 2011 at 10:23 AM, Jonathan <tartley at tartley.com> wrote:
> That's good to know René, but I *think* it's orthogonal to the question.
> Please correct me if I'm wrong.
>
> If PyPy returns items in a different order than CPython, that doesn't
> matter to me, so long as every invocation of my function in a particular
> process ends up receiving a particular order, that doesn't change until
> the process ends (or the cache is cleared.)
>
> The dict subclass is a great idea - but if the change in order isn't ever
> manifested by a regular dict, then it implies to me that the 'sorted' call
> isn't actually required in real life, so the need for this whole test
> disappears.
>
> See also my imminent reply to Ross.
>
> Jonathan
>
>
>
Just because your code works Now, does not mean it will work in the
future. Especially when the ordering is explicitly marked as a
non-deterministic implementation detail. Relying on it to be deterministic
when it is stated to be non-deterministic will mean that in the future you
could get a failure.
Relying on implementation quirks is fine, but not reliable. In your case
though, the worst that can happen now is a cache miss. In the future
though, your cache could be completely useless because every time the data
could be in a different order.
Testing on multiple platforms allows you to sometimes see a failure
condition, which lets you test it. Likewise, using a randomised dict
subclass will let you test your code as if there is an error condition.
cya.
ps. my randomised items subclass is buggy... I forgot that random.shuffle
works in place, and doesn't return a shuffled sequence.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-uk/attachments/20111111/16739911/attachment.html>
More information about the python-uk
mailing list