
    `	                         d dl Z d dlmZ  e j        d          ZdZ e j        d                    e          e j                  Zed             Z	ed
d	            Z
dS )    N)	validatorz^[0-9]{7}-[0-9]$0123456789ABCDEFHJKLMNPRSTUVWXYz^
    (?P<date>(0[1-9]|[1-2]\d|3[01])
    (0[1-9]|1[012])
    (\d{{2}}))
    [A+-]
    (?P<serial>(\d{{3}}))
    (?P<checksum>[{checkmarks}])$)
checkmarksc                 ,   | rt          j        t          |           sdS g d}t          t          | dd                   }t	          | d                   }t          d t          ||          D                       }|dz  }d|z
  |k    p|dk    o|dk    S )	ak  
    Validate a Finnish Business ID.

    Each company in Finland has a distinct business id. For more
    information see `Finnish Trade Register`_

    .. _Finnish Trade Register:
        http://en.wikipedia.org/wiki/Finnish_Trade_Register

    Examples::

        >>> fi_business_id('0112038-9')  # Fast Monkeys Ltd
        True

        >>> fi_business_id('1234567-8')  # Bogus ID
        ValidationFailure(func=fi_business_id, ...)

    .. versionadded:: 0.4
    .. versionchanged:: 0.5
        Method renamed from ``finnish_business_id`` to ``fi_business_id``

    :param business_id: business_id to validate
    F)   	   
               Nr   r   c              3   &   K   | ]\  }}||z  V  d S )N ).0fns      2lib/python3.11/site-packages/validators/i18n/fi.py	<genexpr>z!fi_business_id.<locals>.<genexpr>1   s*      77Aq1u777777       r   )rematchbusiness_id_patternmapintsumzip)business_idfactorsnumberschecksumsum_modulos         r   fi_business_idr$      s    2  bh':KHH u$$$G#{2A2''G;q>""H77Wg!6!677777DBYFK8#G1)FQGr   Tc                 j   | sdS t          j        t          |           }|sdS |                                }t	          |d         |d         z             }t	          |d                   dk    oF|pt	          |d                   dk    o+t
          |t          t
                    z           |d         k    S )a  
    Validate a Finnish Social Security Number.

    This validator is based on `django-localflavor-fi`_.

    .. _django-localflavor-fi:
        https://github.com/django/django-localflavor-fi/

    Examples::

        >>> fi_ssn('010101-0101')
        True

        >>> fi_ssn('101010-0102')
        ValidationFailure(func=fi_ssn, args=...)

    .. versionadded:: 0.5

    :param ssn: Social Security Number to validate
    :param 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.

    Fdateserialr   i  r!   )r   r   ssn_pattern	groupdictr   ssn_checkmarkslen)ssnallow_temporal_ssnresultgdr!   s        r   fi_ssnr0   6   s    6  uXk3''F u					B2f:8,--HBxLQ 			7s2h<00C7	x#n"5"556
:	r   )T)r   validators.utilsr   compiler   r*   formatVERBOSEr(   r$   r0   r   r   r   <module>r5      s    				 & & & & & & bj!455 2bj% &,V~V%F%FJ	 	 H H HD ' ' ' ' ' 'r   