1
1
"""Inn."""
2
2
3
- from .utils import validator
3
+ # from .utils import validator
4
4
5
5
6
- @validator
7
- def inn (value : str ):
8
- """Description"""
6
+ # @validator
7
+ def inn (value : str , / ):
8
+ """Return whether or not given value is a valid russian individual tax number.
9
+
10
+ Examples:
11
+ >>> inn('7736050003')
12
+ # Output: True
13
+ >>> inn('781100086042')
14
+ # Output: True
15
+
16
+ Args:
17
+ value:
18
+ Individual tax number string to validate
19
+
20
+ Returns:
21
+ (Literal[True]): If `value` is a valid russian individual tax number.
22
+ (ValidationError): If `value` is an invalid russian individual tax number.
23
+
24
+ Returns:
25
+
26
+ """
9
27
if not value :
10
28
return False
11
29
@@ -18,10 +36,11 @@ def inn(value: str):
18
36
return (control_number % 10 ) == digits [- 1 ] if control_number > 9 else control_number == digits [- 1 ]
19
37
# person
20
38
elif len (digits ) == 12 :
21
- weight_coefs1 = [7 , 2 , 4 , 10 , 3 , 5 , 9 , 4 , 6 , 6 , 0 , 0 ]
39
+ weight_coefs1 = [7 , 2 , 4 , 10 , 3 , 5 , 9 , 4 , 6 , 8 , 0 , 0 ]
22
40
control_number1 = sum ([d * w for d , w in zip (digits , weight_coefs1 )]) % 11
23
- weight_coefs2 = [3 , 7 , 2 , 4 , 10 , 3 , 5 , 9 , 4 , 0 , 0 , 0 ]
41
+ weight_coefs2 = [3 , 7 , 2 , 4 , 10 , 3 , 5 , 9 , 4 , 6 , 8 , 0 ]
24
42
control_number2 = sum ([d * w for d , w in zip (digits , weight_coefs2 )]) % 11
43
+ print (control_number1 , control_number2 , value )
25
44
return ((control_number1 % 10 ) == digits [- 2 ] if control_number1 > 9 else control_number1 == digits [- 2 ] and
26
45
(control_number2 % 10 ) == digits [- 1 ] if control_number2 > 9 else control_number2 == digits [- 1 ])
27
46
else :
0 commit comments