summaryrefslogtreecommitdiff
path: root/venv/lib/python3.11/site-packages/faker/providers/ssn/et_EE
diff options
context:
space:
mode:
Diffstat (limited to 'venv/lib/python3.11/site-packages/faker/providers/ssn/et_EE')
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/ssn/et_EE/__init__.py70
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/ssn/et_EE/__pycache__/__init__.cpython-311.pycbin0 -> 4701 bytes
2 files changed, 70 insertions, 0 deletions
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
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/ssn/et_EE/__pycache__/__init__.cpython-311.pyc
Binary files differ