]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
Implement random_choices for Python 2
authorMike Bayer <mike_mp@zzzcomputing.com>
Fri, 20 Dec 2019 17:49:13 +0000 (12:49 -0500)
committerMike Bayer <mike_mp@zzzcomputing.com>
Fri, 20 Dec 2019 17:49:13 +0000 (12:49 -0500)
Apparently py2k has no random.choices, so make a quick
one for the tests that use it.

Change-Id: Iadc3442b35f400b5bab0f711b7d3ede5dbc28f52

lib/sqlalchemy/testing/util.py
test/sql/test_compare.py

index dbe6a383de90a5f5f8366c449d329540f41048cf..5244d0d377e7c60f8f1be990bf76d6ded0e776c3 100644 (file)
@@ -66,6 +66,21 @@ def picklers():
             yield pickle_.loads, lambda d: pickle_.dumps(d, protocol)
 
 
+if py2k:
+
+    def random_choices(population, k=1):
+        pop = list(population)
+        # lame but works :)
+        random.shuffle(pop)
+        return pop[0:k]
+
+
+else:
+
+    def random_choices(population, k=1):
+        return random.choices(population, k=k)
+
+
 def round_decimal(value, prec):
     if isinstance(value, float):
         return round(value, prec)
index f8fc43ba54dafbf09f6d46e4d3fd0a0363d322a5..6a2d47c20b2b3d3bfe75d456428ec95d64b98362 100644 (file)
@@ -59,6 +59,7 @@ from sqlalchemy.testing import is_false
 from sqlalchemy.testing import is_not_
 from sqlalchemy.testing import is_true
 from sqlalchemy.testing import ne_
+from sqlalchemy.testing.util import random_choices
 from sqlalchemy.util import class_hierarchy
 
 
@@ -392,13 +393,13 @@ class CoreFixtures(object):
         lambda: (
             # same number of params each time, so compare for IN
             # with legacy behavior of bind for each value works
-            column("x").in_(random.choices(range(10), k=3)),
+            column("x").in_(random_choices(range(10), k=3)),
             # expanding IN places the whole list into a single parameter
             # so it can be of arbitrary length as well
             column("x").in_(
                 bindparam(
                     "q",
-                    random.choices(range(10), k=random.randint(0, 7)),
+                    random_choices(range(10), k=random.randint(0, 7)),
                     expanding=True,
                 )
             ),