This thread is just going around and around in circles, so I will make one final response and then I'm going to bow out.
On Thu, Sep 08, 2016 at 11:34:57AM +0200, Arek Bulski wrote:
Needs to be shuffled().
https://github.com/construct/construct/blob/master/tests/test_all.py See? No way to put imperative code between tests.
I need shuffled. Enough said.
Okay, okay. Suppose you convince us. You complain and stamp your feet and demand and insist and repeat "I need shuffled" ten thousand times until you wear down everyone and they give in. With the 3.6 feature freeze just a few days away, this new code is going into 3.7, which probably won't reach a stable version until March or April 2018.
So what happens between now and then?
I see that your package Construct supports Python versions 2.6, 2.7, 3.3, 3.4 and 3.5. Are you ready to abandon ALL of those and support only 3.7 and higher?
If not, then you can't even use the std lib implementation of shuffled() **because it won't exist**. At best you can test for a std lib implementation, falling back to your own when it doesn't exist.
So you have to write your own implementation regardless of what the std lib does. You cannot rely on the std lib version until you've dropped support for Python 3.6, which you haven't even got support for yet! If you support just *three* releases, the current release plus the two previous, you won't be able to rely on the std lib shuffled() until Python 3.9 comes out, which will probably be in 2021.
Maybe you do need shuffled(). But you can't use the one in the std lib until (probably) 2021 or later. What are you going to do for the next five years?
- Do without. Then you don't really need it. - Write your own. Then you don't need it to be in the std lib.
Adding new functions to the std lib now is an investment for future code, not a necessity for current, existing code. If you need this shuffled function now, you know how to write it. Harsh, but true.