diff options
Diffstat (limited to 'venv/lib/python3.11/site-packages/faker/providers/ssn/ro_RO')
-rw-r--r-- | venv/lib/python3.11/site-packages/faker/providers/ssn/ro_RO/__init__.py | 135 | ||||
-rw-r--r-- | venv/lib/python3.11/site-packages/faker/providers/ssn/ro_RO/__pycache__/__init__.cpython-311.pyc | bin | 0 -> 4286 bytes |
2 files changed, 135 insertions, 0 deletions
diff --git a/venv/lib/python3.11/site-packages/faker/providers/ssn/ro_RO/__init__.py b/venv/lib/python3.11/site-packages/faker/providers/ssn/ro_RO/__init__.py new file mode 100644 index 0000000..3c9ffa8 --- /dev/null +++ b/venv/lib/python3.11/site-packages/faker/providers/ssn/ro_RO/__init__.py @@ -0,0 +1,135 @@ +from .. import Provider as BaseProvider + + +def ssn_checksum(number: str) -> int: + """ + Calculate the checksum for the romanian SSN (CNP). + """ + weights = (2, 7, 9, 1, 4, 6, 3, 5, 8, 2, 7, 9) + check = sum(w * int(n) for w, n in zip(weights, number)) % 11 + return 1 if check == 10 else check + + +def vat_checksum(number: str) -> int: + """ + Calculate the check digit for romanian VAT numbers. + """ + weights = (7, 5, 3, 2, 1, 7, 5, 3, 2) + number = (9 - len(number)) * "0" + number + check = 10 * sum(w * int(n) for w, n in zip(weights, number)) + return check % 11 % 10 + + +class Provider(BaseProvider): + """ + A Faker provider for the Romanian VAT IDs + """ + + vat_id_formats = ( + "RO1########", + "RO2########", + "RO3########", + "RO4########", + "RO5########", + "RO6########", + "RO7########", + "RO8########", + "RO9########", + "1########", + "2########", + "3########", + "4########", + "5########", + "6########", + "7########", + "8########", + "9########", + ) + + def vat_id(self) -> str: + """ + https://ro.wikipedia.org/wiki/Cod_de_identificare_fiscal%C4%83 + :return: A random Romanian VAT ID + """ + vat = self.bothify(self.random_element(self.vat_id_formats)) + coutry = "" + if vat.startswith("RO"): + coutry = "RO" + vat = vat[2:] + check = vat_checksum(vat) + vat += str(check) + return coutry + vat + + ssn_formats = ("#############",) + + def ssn(self) -> str: + """ + Romanian Social Security Number. + + :return: a random Romanian SSN + """ + gender = self.random_int(min=1, max=8) + year = self.random_int(min=0, max=99) + month = self.random_int(min=1, max=12) + day = self.random_int(min=1, max=31) + county = int( + self.random_element( + [ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "17", + "18", + "19", + "20", + "21", + "22", + "23", + "24", + "25", + "26", + "27", + "28", + "29", + "30", + "31", + "32", + "33", + "34", + "35", + "36", + "37", + "38", + "39", + "40", + "41", + "42", + "43", + "44", + "45", + "46", + "51", + "52", + ] + ) + ) + serial = self.random_int(min=1, max=999) + + num = f"{gender:01d}{year:02d}{month:02d}{day:02d}{county:02d}{serial:03d}" + + check = ssn_checksum(num) + num += str(check) + return num diff --git a/venv/lib/python3.11/site-packages/faker/providers/ssn/ro_RO/__pycache__/__init__.cpython-311.pyc b/venv/lib/python3.11/site-packages/faker/providers/ssn/ro_RO/__pycache__/__init__.cpython-311.pyc Binary files differnew file mode 100644 index 0000000..d774e6b --- /dev/null +++ b/venv/lib/python3.11/site-packages/faker/providers/ssn/ro_RO/__pycache__/__init__.cpython-311.pyc |