Skip to content

Commit

Permalink
feat/list_utils
Browse files Browse the repository at this point in the history
add util to flatten list, taken from quebra_frases
  • Loading branch information
JarbasAl committed Mar 23, 2022
1 parent e3ba24d commit ddafc59
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 1 deletion.
12 changes: 12 additions & 0 deletions ovos_utils/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,18 @@ def rotate_list(l, n=1):
return l[n:] + l[:n]


def flatten_list(some_list, tuples=True):
_flatten = lambda l: [item for sublist in l for item in sublist]
if tuples:
while any(isinstance(x, list) or isinstance(x, tuple)
for x in some_list):
some_list = _flatten(some_list)
else:
while any(isinstance(x, list) for x in some_list):
some_list = _flatten(some_list)
return some_list


def datestr2ts(datestr):
y = int(datestr[:4])
m = int(datestr[4:6])
Expand Down
15 changes: 14 additions & 1 deletion test/unittests/test_utils.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import unittest
from ovos_utils import rotate_list, camel_case_split, get_handler_name

from ovos_utils import rotate_list, camel_case_split, get_handler_name, flatten_list


class TestHelpers(unittest.TestCase):
Expand All @@ -14,10 +15,22 @@ def some_function():
self.assertEqual(camel_case_split("MyAwesomeSkill"),
"My Awesome Skill")

def test_list_utils(self):
self.assertEqual(rotate_list([1, 2, 3]), [2, 3, 1])
self.assertEqual(rotate_list([1, 2, 3], 2), [3, 1, 2])
self.assertEqual(rotate_list([1, 2, 3], 3), [1, 2, 3])

self.assertEqual(rotate_list([1, 2, 3], -1), [3, 1, 2])
self.assertEqual(rotate_list([1, 2, 3], -2), [2, 3, 1])
self.assertEqual(rotate_list([1, 2, 3], -3), [1, 2, 3])

self.assertEqual(
flatten_list([["A", "B"], ["C"]]), ["A", "B", "C"]
)
self.assertEqual(
flatten_list([("A", "B")]), ["A", "B"]
)
self.assertEqual(
flatten_list([("A", "B"), ["C"], [["D", ["E", ["F"]]]]]),
["A", "B", "C", "D", "E", "F"]
)

0 comments on commit ddafc59

Please sign in to comment.