11"""Inn."""
22
3- from .utils import validator
3+ # from .utils import validator
44
55
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+ """
927 if not value :
1028 return False
1129
@@ -18,10 +36,11 @@ def inn(value: str):
1836 return (control_number % 10 ) == digits [- 1 ] if control_number > 9 else control_number == digits [- 1 ]
1937 # person
2038 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 ]
2240 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 ]
2442 control_number2 = sum ([d * w for d , w in zip (digits , weight_coefs2 )]) % 11
43+ print (control_number1 , control_number2 , value )
2544 return ((control_number1 % 10 ) == digits [- 2 ] if control_number1 > 9 else control_number1 == digits [- 2 ] and
2645 (control_number2 % 10 ) == digits [- 1 ] if control_number2 > 9 else control_number2 == digits [- 1 ])
2746 else :
0 commit comments