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__/fr.cpython-310.pyc
o

�hM�@sjdZddlmZddlZddlZddlmZedd��Zedeje	e
ffdd	��Zede	fd
d��ZdS)zFrance.�)�	lru_cacheN)�	validatorcCst�dtj�S)zSSN Pattern.zW^([1,2])\s(\d{2})\s(0[1-9]|1[0-2])\s(\d{2,3}|2[A,B])\s(\d{2,3})\s(\d{3})(?:\s(\d{2}))?$)�re�compile�VERBOSE�rr�E/usr/local/CyberCP/lib/python3.10/site-packages/validators/i18n/fr.py�_ssn_patterns�r	�valuecCs�|sdSt|t�r |dvrdSzt|�}Wn
tyYdSwd|ko)dknpCd|ko5dknpCd|koAd	kSS)
a)Validate a french department number.

    Examples:
        >>> fr_department(20)  # can be an integer
        # Output: True
        >>> fr_department("20")
        # Output: True
        >>> fr_department("971")  # Guadeloupe
        # Output: True
        >>> fr_department("00")
        # Output: ValidationError(func=fr_department, args=...)
        >>> fr_department('2A')  # Corsica
        # Output: True
        >>> fr_department('2B')
        # Output: True
        >>> fr_department('2C')
        # Output: ValidationError(func=fr_department, args=...)

    Args:
        value:
            French department number to validate.

    Returns:
        (Literal[True]): If `value` is a valid french department number.
        (ValidationError): If `value` is an invalid french department number.
    F��2A�2BT����_i�i�)�
isinstance�str�int�
ValueError)r
rrr�
fr_departments
�HrcCs�|sdSt�t�|�}|sdSt|���}|d}|d}|dkr't|�s'dS|dur-dSt|�t|d�kr9dS|dvrG|d	krCd
nd|d<td�|dd���}t|�d
|d
kS)a�Validate a french Social Security Number.

    Each french citizen has a distinct Social Security Number.
    For more information see [French Social Security Number][1] (sadly unavailable in english).

    [1]: https://fr.wikipedia.org/wiki/Num%C3%A9ro_de_s%C3%A9curit%C3%A9_sociale_en_France

    Examples:
        >>> fr_ssn('1 84 12 76 451 089 46')
        # Output: True
        >>> fr_ssn('1 84 12 76 451 089')  # control key is optional
        # Output: True
        >>> fr_ssn('3 84 12 76 451 089 46')  # wrong gender number
        # Output: ValidationError(func=fr_ssn, args=...)
        >>> fr_ssn('1 84 12 76 451 089 47')  # wrong control key
        # Output: ValidationError(func=fr_ssn, args=...)

    Args:
        value:
            French Social Security Number string to validate.

    Returns:
        (Literal[True]): If `value` is a valid french Social Security Number.
        (ValidationError): If `value` is an invalid french Social Security Number.
    F�����99NT�rr�19�18��a)	r�matchr	�list�groupsr�lenr�join)r
�matchedr!�control_key�
department�digitsrrr�fr_ssnCs$r()
�__doc__�	functoolsrr�typing�validators.utilsrr	�Unionrrrr(rrrr�<module>s
'