
    ki                     ^    d dl Z d dlmZ ddlmZmZ dZdedede	fd	Z
 G d
 de          ZdS )    N)ascii_uppercase   )BaseProviderElementsTypeTsweight_factorreturnc                     dt           dt          fd}d}t          |           D ]1\  }}||t          |          k     r ||          ||         z  ndz  }2|S )z
    multiply s(str) by weight_factor char by char
    e.g.
    input: s="ABCDE", weight_factor=[1, 2, 3, 4, 5]
    return: A*1 + B*2 + C*3 + D*4 + E*5

    will multiply 0 when len(weight_factor) less than len(s)
    cr	   c                     t          |           dk    rt          |           S t          |           dk    rt          |           dz
  S t          |           dk    rt          |           dz
  S t          |           dz
  S )zTA=1, B=2, ...., I=9,
        J=1, K=2, ..., R=9,
        S=2, T=3, ..., Z=9
        @   I   R   Q   )ordint)r   s    s/var/www/html/Pagina-Ingenieria-Requisitos/venv/lib/python3.11/site-packages/faker/providers/automotive/__init__.py_get_char_weightz2calculate_vin_str_weight.<locals>._get_char_weight   sl    
 q66R<<q66Mq66R<<q66B;q66R<<q66B;1vv{    r   )strr   	enumeratelen)r   r   r   resir   s         r   calculate_vin_str_weightr   
   s    C C     C! W W1S=O=O9O9O""]1%555UVVJr   c                   :    e Zd ZU dZdZeed<   defdZdefdZ	dS )Providerz0Implement default automotive provider for Faker. license_formatsr	   c                      t          j        d fd                      j                            }                     |          S )zGenerate a license plate.z\?c                 8                         t                    S )N)random_elementr   )xselfs    r   <lambda>z(Provider.license_plate.<locals>.<lambda>1   s    d))/:: r   )resubr"   r   numerify)r$   temps   ` r   license_platezProvider.license_plate-   sK    v:::: 455
 

 }}T"""r   c                     d}|                      d|          }|                      d|          }t          |g d          }t          |g d          }||z   dz  }|dk    rd	nt          |          }||z   |z   S )
zGenerate vin number.!1234567890ABCDEFGHJKLMNPRSTUVWXYZz????????)lettersz????####)                  r   
   )	   r.   r/   r0   r1   r2   r3   r      r4   X)bothifyr   r   )r$   	vin_chars
front_part	rear_partfront_part_weightrear_part_weightchecksumchecksum_chars           r   vinzProvider.vin6   s    7	\\*i\@@
LLYL??	4ZAZAZAZ[[3I?W?W?WXX%(88B>'2~~3x==M)I55r   N)
__name__
__module____qualname____doc__r   r   __annotations__r   r*   r@   r   r   r   r   r   (   sb         ::$&O\&&&#s # # # #	6S 	6 	6 	6 	6 	6 	6r   r   )r&   stringr    r   r   	localizedr   listr   r   r   r   r   r   <module>rJ      s    				 " " " " " " ) ) ) ) ) ) ) )	 D S    <6 6 6 6 6| 6 6 6 6 6r   