
    Vg                     V    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y)    N)ascii_uppercase   )BaseProviderElementsTypeTsweight_factorreturnc                     dt         dt        fd}d}t        |       D ]&  \  }}||t        |      k  r ||      ||   z  ndz  }( |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    d/var/www/html/hubwallet-dev/venv/lib/python3.12/site-packages/faker/providers/automotive/__init__.py_get_char_weightz2calculate_vin_str_weight.<locals>._get_char_weight   sX    
 q6R<q6Mq6R<q6B;q6R<q6B;1v{    r   )strr   	enumeratelen)r   r   r   resir   s         r   calculate_vin_str_weightr   
   sc    C C  C! W1S=O9O"]1%55UVVWJr   c                   8    e Zd ZU dZdZeed<   defdZdefdZ	y)Providerz0Implement default automotive provider for Faker. license_formatsr	   c                      t        j                  d fd j                   j                              } j	                  |      S )zGenerate a license plate.z\?c                 .    j                  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-   s<    vv: 4 45

 }}T""r   c                     d}| j                  d|      }| j                  d|      }t        |g d      }t        |g d      }||z   dz  }|dk(  rdn
t        |      }||z   |z   S )	zGenerate vin number.!1234567890ABCDEFGHJKLMNPRSTUVWXYZz????????)letters)                  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   sx    7	\\*i\@
LLYL?	4ZAZ[3I?W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   (   s'    :$&O\&#s #	6S 	6r   r   )r&   stringr    r   r   	localizedr   listr   r   r   r   r   r   <module>rJ      s9    	 " )	 D S <6| 6r   