diff --git a/faker/providers/company/ru_RU/__init__.py b/faker/providers/company/ru_RU/__init__.py index 23cde25897e..ca2a574e60e 100644 --- a/faker/providers/company/ru_RU/__init__.py +++ b/faker/providers/company/ru_RU/__init__.py @@ -12,6 +12,11 @@ def calculate_checksum(value: str) -> str: return str((check_sum % 11) % 10) +def calculate_snils_checksum(numbers: str) -> str: + checksum = sum(int(v) * (9 - i) for i, v in enumerate(numbers)) % 101 + return "%02d" % (checksum if checksum < 100 else 0) + + class Provider(CompanyProvider): formats = ( "{{company_prefix}} «{{last_name}}»", @@ -1168,3 +1173,10 @@ def kpp(self) -> str: tail: str = "%03d" % self.random_int(min=1, max=999) return region + inspection + reason + tail + + def snils(self) -> str: + """ + Returns SNILS number (ru. СНИЛС). + """ + numbers: str = "%09d" % self.random_int(min=1, max=999999999) + return numbers + calculate_snils_checksum(numbers) diff --git a/tests/providers/test_company.py b/tests/providers/test_company.py index 2face87f1d6..3d6461a7a2a 100644 --- a/tests/providers/test_company.py +++ b/tests/providers/test_company.py @@ -22,7 +22,7 @@ from faker.providers.company.pt_BR import company_id_checksum from faker.providers.company.ro_RO import Provider as RoRoCompanyProvider from faker.providers.company.ru_RU import Provider as RuRuCompanyProvider -from faker.providers.company.ru_RU import calculate_checksum +from faker.providers.company.ru_RU import calculate_checksum, calculate_snils_checksum from faker.providers.company.th_TH import Provider as ThThCompanyProvider from faker.providers.company.tr_TR import Provider as TrTrCompanyProvider from faker.providers.company.vi_VN import Provider as ViVnCompanyProvider @@ -364,6 +364,12 @@ def test_bs(self, faker, num_samples): assert isinstance(bs, str) assert bs_words[0] in RuRuCompanyProvider.bsWords[0] + def test_snils(self, faker, num_samples): + for _ in range(num_samples): + snils = faker.snils() + assert len(snils) == 11 + assert snils[-2:] == calculate_snils_checksum(snils[:10]) + class TestItIt: """Test it_IT company provider methods"""