From 4f19cc19347f08e99f94e04c72240f21bb2faecb Mon Sep 17 00:00:00 2001 From: Mathieu Beligon Date: Wed, 31 May 2023 15:49:47 -0400 Subject: [PATCH] [fast search] use set to have faster search --- pymispwarninglists/api.py | 3 ++- tests/tests.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/pymispwarninglists/api.py b/pymispwarninglists/api.py index 0c21d77..c80ea3c 100644 --- a/pymispwarninglists/api.py +++ b/pymispwarninglists/api.py @@ -33,6 +33,7 @@ class WarningList(): def __init__(self, warninglist: Dict[str, Any], slow_search: bool=False): self.warninglist = warninglist self.list = self.warninglist['list'] + self.set = set(self.list) self.description = self.warninglist['description'] self.version = int(self.warninglist['version']) self.name = self.warninglist['name'] @@ -71,7 +72,7 @@ class WarningList(): return json.dumps(self, default=json_default) def _fast_search(self, value) -> bool: - return value in self.list + return value in self.set def _network_index(self) -> List: to_return = [] diff --git a/tests/tests.py b/tests/tests.py index 16bfc95..90b77ad 100644 --- a/tests/tests.py +++ b/tests/tests.py @@ -39,7 +39,7 @@ class TestPyMISPWarningLists(unittest.TestCase): def test_slow_search(self): self.warninglists = WarningLists(True) results = self.warninglists.search('8.8.8.8') - self.assertEqual(results[0].name, 'List of known IPv4 public DNS resolvers') + self.assertIn('List of known IPv4 public DNS resolvers', [r.name for r in results]) results = self.warninglists.search('100.64.1.56') self.assertEqual(results[0].name, 'List of RFC 6598 CIDR blocks') results = self.warninglists.search('2001:DB8::34:1')