From 6d7ba58f880be618ade07f8ea080fe8c4bf8a896 Mon Sep 17 00:00:00 2001 From: cyfraeviolae Date: Wed, 3 Apr 2024 03:10:44 -0400 Subject: venv --- .../faker/providers/ssn/et_EE/__init__.py | 70 +++++++++++++++++++++ .../ssn/et_EE/__pycache__/__init__.cpython-311.pyc | Bin 0 -> 4701 bytes 2 files changed, 70 insertions(+) create mode 100644 venv/lib/python3.11/site-packages/faker/providers/ssn/et_EE/__init__.py create mode 100644 venv/lib/python3.11/site-packages/faker/providers/ssn/et_EE/__pycache__/__init__.cpython-311.pyc (limited to 'venv/lib/python3.11/site-packages/faker/providers/ssn/et_EE') diff --git a/venv/lib/python3.11/site-packages/faker/providers/ssn/et_EE/__init__.py b/venv/lib/python3.11/site-packages/faker/providers/ssn/et_EE/__init__.py new file mode 100644 index 0000000..8bcf86e --- /dev/null +++ b/venv/lib/python3.11/site-packages/faker/providers/ssn/et_EE/__init__.py @@ -0,0 +1,70 @@ +import datetime +import operator + +from typing import List + +from .. import Provider as SsnProvider + + +def checksum(digits: List[int]) -> int: + """Calculate checksum of Estonian personal identity code. + + Checksum is calculated with "Modulo 11" method using level I or II scale: + Level I scale: 1 2 3 4 5 6 7 8 9 1 + Level II scale: 3 4 5 6 7 8 9 1 2 3 + + The digits of the personal code are multiplied by level I scale and summed; + if remainder of modulo 11 of the sum is less than 10, checksum is the + remainder. + If remainder is 10, then level II scale is used; checksum is remainder if + remainder < 10 or 0 if remainder is 10. + + See also https://et.wikipedia.org/wiki/Isikukood + """ + sum_mod11 = sum(map(operator.mul, digits, Provider.scale1)) % 11 + if sum_mod11 < 10: + return sum_mod11 + sum_mod11 = sum(map(operator.mul, digits, Provider.scale2)) % 11 + return 0 if sum_mod11 == 10 else sum_mod11 + + +class Provider(SsnProvider): + scale1 = (1, 2, 3, 4, 5, 6, 7, 8, 9, 1) + scale2 = (3, 4, 5, 6, 7, 8, 9, 1, 2, 3) + + def ssn(self, min_age: int = 16, max_age: int = 90) -> str: + """ + Returns 11 character Estonian personal identity code (isikukood, IK). + + Age of person is between 16 and 90 years, based on local computer date. + This function assigns random sex to person. + An Estonian Personal identification code consists of 11 digits, + generally given without any whitespace or other delimiters. + The form is GYYMMDDSSSC, where G shows sex and century of birth (odd + number male, even number female, 1-2 19th century, 3-4 20th century, + 5-6 21st century), SSS is a serial number separating persons born on + the same date and C a checksum. + + https://en.wikipedia.org/wiki/National_identification_number#Estonia + """ + age = datetime.timedelta(days=self.generator.random.randrange(min_age * 365, max_age * 365)) + birthday = datetime.date.today() - age + if birthday.year < 2000: + ik = self.generator.random.choice(("3", "4")) + elif birthday.year < 2100: + ik = self.generator.random.choice(("5", "6")) + else: + ik = self.generator.random.choice(("7", "8")) + + ik += "%02d%02d%02d" % ((birthday.year % 100), birthday.month, birthday.day) + ik += str(self.generator.random.randrange(0, 999)).zfill(3) + return ik + str(checksum([int(ch) for ch in ik])) + + vat_id_formats = ("EE#########",) + + def vat_id(self) -> str: + """ + http://ec.europa.eu/taxation_customs/vies/faq.html#item_11 + :return: A random Estonian VAT ID + """ + return self.bothify(self.random_element(self.vat_id_formats)) diff --git a/venv/lib/python3.11/site-packages/faker/providers/ssn/et_EE/__pycache__/__init__.cpython-311.pyc b/venv/lib/python3.11/site-packages/faker/providers/ssn/et_EE/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000..873ff86 Binary files /dev/null and b/venv/lib/python3.11/site-packages/faker/providers/ssn/et_EE/__pycache__/__init__.cpython-311.pyc differ -- cgit v1.2.3