HEX
Server: LiteSpeed
System: Linux php-prod-1.spaceapp.ru 5.15.0-157-generic #167-Ubuntu SMP Wed Sep 17 21:35:53 UTC 2025 x86_64
User: xnsbb3110 (1041)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //usr/local/CyberCP/lib/python3.10/site-packages/validators/i18n/__pycache__/fi.cpython-310.pyc
o

�h��@stdZddlmZddlZddlmZedd��Zedefdd	��Zed
efdd��Z	ed
d�d
ede
fdd��ZdS)zFinland.�)�	lru_cacheN)�	validatorcCs
t�d�S)zBusiness ID Pattern.z^[0-9]{7}-[0-9]$)�re�compile�rr�E/usr/local/CyberCP/lib/python3.10/site-packages/validators/i18n/fi.py�_business_id_patterns
r�ssn_check_markscCst�dj|d�tj�S)zSSN Pattern.z�^
        (?P<date>(0[1-9]|[1-2]\d|3[01])
        (0[1-9]|1[012])
        (\d{{2}}))
        [ABCDEFYXWVU+-]
        (?P<serial>(\d{{3}}))
        (?P<checksum>[{check_marks}])$)�check_marks)rr�format�VERBOSE)r	rrr�_ssn_patterns�	�r
�valuecCs�|sdSt�t�|�s
dSgd�}tt|dd��}t|d�}tdd�t||�D��d}d||kp?||ko=d	kSS)
a�Validate a Finnish Business ID.

    Each company in Finland has a distinct business id. For more
    information see [Finnish Trade Register][1]

    [1]: http://en.wikipedia.org/wiki/Finnish_Trade_Register

    Examples:
        >>> fi_business_id('0112038-9')  # Fast Monkeys Ltd
        # Output: True
        >>> fi_business_id('1234567-8')  # Bogus ID
        # Output: ValidationError(func=fi_business_id, ...)

    Args:
        value:
            Business ID string to be validated.

    Returns:
        (Literal[True]): If `value` is a valid finnish business id.
        (ValidationError): If `value` is an invalid finnish business id.
    F)��	�
����Nrrcss�|]	\}}||VqdS)Nr)�.0�f�nrrr�	<genexpr>@s�z!fi_business_id.<locals>.<genexpr>�r)r�matchr�map�int�sum�zip)r�factors�numbers�checksum�modulorrr�fi_business_id"s$r$T)�allow_temporal_ssnr%cCs||sdSd}t�t|�|�}sdS|��}t|d|d�}t|d�dko=|p1t|d�dko=||t|�|dkS)aValidate a Finnish Social Security Number.

    This validator is based on [django-localflavor-fi][1].

    [1]: https://github.com/django/django-localflavor-fi/

    Examples:
        >>> fi_ssn('010101-0101')
        # Output: True
        >>> fi_ssn('101010-0102')
        # Output: ValidationError(func=fi_ssn, args=...)

    Args:
        value:
            Social Security Number to be validated.
        allow_temporal_ssn:
            Whether to accept temporal SSN numbers. Temporal SSN numbers are the
            ones where the serial is in the range [900-999]. By default temporal
            SSN numbers are valid.

    Returns:
        (Literal[True]): If `value` is a valid finnish SSN.
        (ValidationError): If `value` is an invalid finnish SSN.
    F�0123456789ABCDEFHJKLMNPRSTUVWXY�date�serialri�r")rrr
�	groupdictr�len)rr%r	�result�gdr"rrr�fi_ssnDs��r-)�__doc__�	functoolsrr�validators.utilsrr�strr
r$�boolr-rrrr�<module>s
!