Skip to content

Commit d19b47f

Browse files
committed
Now dynamically adding all assertion submodules
1 parent fe711c9 commit d19b47f

File tree

1 file changed

+15
-13
lines changed

1 file changed

+15
-13
lines changed

fluentcheck/check.py

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,27 @@
1+
import importlib
12
import inspect
3+
import pkgutil
24
from .exceptions import CheckError
35

46

57
class Check:
68

79
NUMERIC_TYPES = (int, float, complex)
10+
ASSERTIONS_PACKAGE = 'fluentcheck.assertions'
11+
12+
def _import_assertion_modules(self):
13+
ass = importlib.import_module(Check.ASSERTIONS_PACKAGE)
14+
assertion_modules = list()
15+
for _1, module_name, _2 in pkgutil.iter_modules(ass.__path__):
16+
assertion_modules.append(importlib.import_module(ass.__name__ + '.' + module_name))
17+
return assertion_modules
818

919
def __new__(cls, *args, **kwargs):
10-
# import assertion functions from submodules
11-
from fluentcheck.assertions import numbers as ass_numb
12-
from fluentcheck.assertions import sequences as ass_seq
13-
from fluentcheck.assertions import strings as ass_str
14-
from fluentcheck.assertions import booleans as ass_bool
15-
from fluentcheck.assertions import dicts as ass_dicts
16-
from fluentcheck.assertions import types as ass_types
17-
from fluentcheck.assertions import geo as ass_geo
18-
from fluentcheck.assertions import uuids as ass_uuids
19-
from fluentcheck.assertions import collections as ass_colls
20+
# retrieve all modules in assertion package
21+
assertion_modules = cls._import_assertion_modules(cls)
22+
# bind Check object instance with assertion functions from assertion modules
2023
instance = super(Check, cls).__new__(cls)
21-
for module in [ass_numb, ass_seq, ass_str, ass_bool, ass_dicts, ass_types,
22-
ass_geo, ass_uuids, ass_colls]:
24+
for module in assertion_modules:
2325
for item in inspect.getmembers(module, inspect.isfunction):
2426
func_name = item[0]
2527
func = item[1]
@@ -34,7 +36,7 @@ def __init__(self, value):
3436
def value(self):
3537
return self._val
3638

37-
# Nonethiness
39+
# Basic checks
3840

3941
def is_none(self):
4042
try:

0 commit comments

Comments
 (0)