diff options
author | cyfraeviolae <cyfraeviolae> | 2024-04-03 03:17:55 -0400 |
---|---|---|
committer | cyfraeviolae <cyfraeviolae> | 2024-04-03 03:17:55 -0400 |
commit | 12cf076118570eebbff08c6b3090e0d4798447a1 (patch) | |
tree | 3ba25e17e3c3a5e82316558ba3864b955919ff72 /venv/lib/python3.11/site-packages/faker/providers/ssn/en_CA | |
parent | c45662ff3923b34614ddcc8feb9195541166dcc5 (diff) |
no venv
Diffstat (limited to 'venv/lib/python3.11/site-packages/faker/providers/ssn/en_CA')
2 files changed, 0 insertions, 80 deletions
diff --git a/venv/lib/python3.11/site-packages/faker/providers/ssn/en_CA/__init__.py b/venv/lib/python3.11/site-packages/faker/providers/ssn/en_CA/__init__.py deleted file mode 100644 index 6df8f8b..0000000 --- a/venv/lib/python3.11/site-packages/faker/providers/ssn/en_CA/__init__.py +++ /dev/null @@ -1,80 +0,0 @@ -from .. import Provider as SsnProvider - - -def checksum(sin): - """ - Determine validity of a Canadian Social Insurance Number. - Validation is performed using a modified Luhn Algorithm. To check - the Every second digit of the SIN is doubled and the result is - summed. If the result is a multiple of ten, the Social Insurance - Number is considered valid. - - https://en.wikipedia.org/wiki/Social_Insurance_Number - """ - - # Remove spaces and create a list of digits. - checksumCollection = list(sin.replace(" ", "")) - checksumCollection = [int(i) for i in checksumCollection] - - # Discard the last digit, we will be calculating it later. - checksumCollection[-1] = 0 - - # Iterate over the provided SIN and double every second digit. - # In the case that doubling that digit results in a two-digit - # number, then add the two digits together and keep that sum. - - for i in range(1, len(checksumCollection), 2): - result = checksumCollection[i] * 2 - if result < 10: - checksumCollection[i] = result - else: - checksumCollection[i] = result - 10 + 1 - - # The appropriate checksum digit is the value that, when summed - # with the first eight values, results in a value divisible by 10 - - check_digit = 10 - (sum(checksumCollection) % 10) - check_digit = 0 if check_digit == 10 else check_digit - - return check_digit - - -class Provider(SsnProvider): - # In order to create a valid SIN we need to provide a number that - # passes a simple modified Luhn Algorithm checksum. - # - # This function reverses the checksum steps to create a random - # valid nine-digit Canadian SIN (Social Insurance Number) in the - # format '### ### ###'. - def ssn(self) -> str: - # Create an array of 8 elements initialized randomly. - digits = self.generator.random.sample(range(9), 8) - - # The final step of the validation requires that all of the - # digits sum to a multiple of 10. First, sum the first 8 and - # set the 9th to the value that results in a multiple of 10. - check_digit = 10 - (sum(digits) % 10) - check_digit = 0 if check_digit == 10 else check_digit - - digits.append(check_digit) - - # digits is now the digital root of the number we want - # multiplied by the magic number 121 212 121. The next step is - # to reverse the multiplication which occurred on every other - # element. - for i in range(1, len(digits), 2): - if digits[i] % 2 == 0: - digits[i] = digits[i] // 2 - else: - digits[i] = (digits[i] + 9) // 2 - - # Build the resulting SIN string. - sin = "" - for i in range(0, len(digits)): - sin += str(digits[i]) - # Add a space to make it conform to Canadian formatting. - if i in (2, 5): - sin += " " - - # Finally return our random but valid SIN. - return sin diff --git a/venv/lib/python3.11/site-packages/faker/providers/ssn/en_CA/__pycache__/__init__.cpython-311.pyc b/venv/lib/python3.11/site-packages/faker/providers/ssn/en_CA/__pycache__/__init__.cpython-311.pyc Binary files differdeleted file mode 100644 index 08e6402..0000000 --- a/venv/lib/python3.11/site-packages/faker/providers/ssn/en_CA/__pycache__/__init__.cpython-311.pyc +++ /dev/null |