Skip to content

Commit 9c71cca

Browse files
authored
Merge pull request #24 from uzumaxy/feature/validators-folder
Split validators.py onto separate python files
2 parents 7c79319 + 6e105d2 commit 9c71cca

File tree

7 files changed

+335
-322
lines changed

7 files changed

+335
-322
lines changed

pyvalid/__init__.py

+2-6
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,10 @@
1-
from pyvalid.__accepts import Accepts
2-
from pyvalid.__returns import Returns
1+
from pyvalid.__accepts import Accepts as accepts
2+
from pyvalid.__returns import Returns as returns
33
from pyvalid.__exceptions import InvalidArgumentNumberError, \
44
InvalidReturnType, ArgumentValidationError
55

6-
7-
accepts = Accepts
8-
returns = Returns
96
version = '0.9.5'
107

11-
128
__all__ = [
139
'validators',
1410
'switch',

pyvalid/validators.py

-316
This file was deleted.

pyvalid/validators/__base.py

+47
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
from abc import ABCMeta, abstractmethod
2+
from six import with_metaclass
3+
from pyvalid import accepts
4+
try:
5+
from collections.abc import Callable
6+
except ImportError:
7+
from collections import Callable
8+
9+
10+
class Validator(Callable):
11+
12+
@accepts(object, Callable)
13+
def __init__(self, func):
14+
self.__func = func
15+
16+
def __call__(self, *args, **kwargs):
17+
return self.__func(*args, **kwargs)
18+
19+
20+
class AbstractValidator(with_metaclass(ABCMeta, Validator)):
21+
22+
@property
23+
@abstractmethod
24+
def checkers(self):
25+
raise NotImplementedError
26+
27+
@abstractmethod
28+
def __call__(self):
29+
raise NotImplementedError
30+
31+
def __init__(self):
32+
Validator.__init__(self, self)
33+
for checker_func, checker_args in list(self.checkers.items()):
34+
try:
35+
to_del = checker_args[0] is None
36+
except (IndexError, TypeError):
37+
to_del = True
38+
if to_del:
39+
del self.checkers[checker_func]
40+
41+
def _check(self, val):
42+
valid = True
43+
for checker_func, checker_args in self.checkers.items():
44+
valid = checker_func(val, *checker_args)
45+
if not valid:
46+
break
47+
return valid

pyvalid/validators/__init__.py

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
from pyvalid.validators.__base import Validator, AbstractValidator
2+
from pyvalid.validators.__iterable import IterableValidator
3+
from pyvalid.validators.__number import NumberValidator
4+
from pyvalid.validators.__string import StringValidator
5+
6+
is_validator = Validator
7+
8+
__all__ = [
9+
'is_validator',
10+
'Validator',
11+
'AbstractValidator',
12+
'IterableValidator',
13+
'NumberValidator',
14+
'StringValidator'
15+
]

0 commit comments

Comments
 (0)