summaryrefslogtreecommitdiff
path: root/venv/lib/python3.11/site-packages/faker/providers/automotive
diff options
context:
space:
mode:
Diffstat (limited to 'venv/lib/python3.11/site-packages/faker/providers/automotive')
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/__init__.py63
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/__pycache__/__init__.cpython-311.pycbin0 -> 3672 bytes
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/ar_BH/__init__.py12
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/ar_BH/__pycache__/__init__.cpython-311.pycbin0 -> 710 bytes
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/ar_JO/__init__.py53
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/ar_JO/__pycache__/__init__.cpython-311.pycbin0 -> 1570 bytes
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/ar_PS/__init__.py64
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/ar_PS/__pycache__/__init__.cpython-311.pycbin0 -> 1719 bytes
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/ar_SA/__init__.py89
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/ar_SA/__pycache__/__init__.cpython-311.pycbin0 -> 4101 bytes
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/az_AZ/__init__.py97
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/az_AZ/__pycache__/__init__.cpython-311.pycbin0 -> 1874 bytes
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/bn_BD/__init__.py253
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/bn_BD/__pycache__/__init__.cpython-311.pycbin0 -> 6196 bytes
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/da_DK/__init__.py9
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/da_DK/__pycache__/__init__.cpython-311.pycbin0 -> 705 bytes
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/de_CH/__init__.py44
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/de_CH/__pycache__/__init__.cpython-311.pycbin0 -> 1484 bytes
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/de_DE/__init__.py430
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/de_DE/__pycache__/__init__.cpython-311.pycbin0 -> 3169 bytes
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/el_GR/__init__.py23
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/el_GR/__pycache__/__init__.cpython-311.pycbin0 -> 1366 bytes
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/en_CA/__init__.py45
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/en_CA/__pycache__/__init__.cpython-311.pycbin0 -> 888 bytes
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/en_GB/__init__.py15
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/en_GB/__pycache__/__init__.cpython-311.pycbin0 -> 733 bytes
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/en_NZ/__init__.py32
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/en_NZ/__pycache__/__init__.cpython-311.pycbin0 -> 831 bytes
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/en_PH/__init__.py70
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/en_PH/__pycache__/__init__.cpython-311.pycbin0 -> 3860 bytes
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/en_US/__init__.py168
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/en_US/__pycache__/__init__.cpython-311.pycbin0 -> 1473 bytes
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/es_AR/__init__.py87
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/es_AR/__pycache__/__init__.cpython-311.pycbin0 -> 3205 bytes
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/es_CL/__init__.py66
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/es_CL/__pycache__/__init__.cpython-311.pycbin0 -> 3692 bytes
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/es_CO/__init__.py16
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/es_CO/__pycache__/__init__.cpython-311.pycbin0 -> 757 bytes
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/es_ES/__init__.py126
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/es_ES/__pycache__/__init__.cpython-311.pycbin0 -> 3736 bytes
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/et_EE/__init__.py12
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/et_EE/__pycache__/__init__.cpython-311.pycbin0 -> 711 bytes
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/fi_FI/__init__.py12
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/fi_FI/__pycache__/__init__.cpython-311.pycbin0 -> 711 bytes
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/fil_PH/__init__.py10
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/fil_PH/__pycache__/__init__.cpython-311.pycbin0 -> 660 bytes
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/fr_FR/__init__.py17
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/fr_FR/__pycache__/__init__.cpython-311.pycbin0 -> 725 bytes
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/he_IL/__init__.py11
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/he_IL/__pycache__/__init__.cpython-311.pycbin0 -> 632 bytes
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/hu_HU/__init__.py12
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/hu_HU/__pycache__/__init__.cpython-311.pycbin0 -> 712 bytes
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/id_ID/__init__.py16
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/id_ID/__pycache__/__init__.cpython-311.pycbin0 -> 696 bytes
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/it_IT/__init__.py15
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/it_IT/__pycache__/__init__.cpython-311.pycbin0 -> 710 bytes
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/lt_LT/__init__.py12
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/lt_LT/__pycache__/__init__.cpython-311.pycbin0 -> 713 bytes
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/nl_BE/__init__.py16
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/nl_BE/__pycache__/__init__.cpython-311.pycbin0 -> 704 bytes
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/nl_NL/__init__.py77
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/nl_NL/__pycache__/__init__.cpython-311.pycbin0 -> 3062 bytes
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/no_NO/__init__.py15
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/no_NO/__pycache__/__init__.cpython-311.pycbin0 -> 712 bytes
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/pl_PL/__init__.py39
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/pl_PL/__pycache__/__init__.cpython-311.pycbin0 -> 1778 bytes
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/pt_BR/__init__.py7
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/pt_BR/__pycache__/__init__.cpython-311.pycbin0 -> 612 bytes
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/pt_PT/__init__.py18
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/pt_PT/__pycache__/__init__.cpython-311.pycbin0 -> 744 bytes
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/ro_RO/__init__.py66
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/ro_RO/__pycache__/__init__.cpython-311.pycbin0 -> 1405 bytes
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/ru_RU/__init__.py321
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/ru_RU/__pycache__/__init__.cpython-311.pycbin0 -> 4461 bytes
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/sk_SK/__init__.py100
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/sk_SK/__pycache__/__init__.cpython-311.pycbin0 -> 1649 bytes
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/sq_AL/__init__.py12
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/sq_AL/__pycache__/__init__.cpython-311.pycbin0 -> 712 bytes
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/sv_SE/__init__.py18
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/sv_SE/__pycache__/__init__.cpython-311.pycbin0 -> 793 bytes
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/th_TH/__init__.py39
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/th_TH/__pycache__/__init__.cpython-311.pycbin0 -> 1671 bytes
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/tl_PH/__init__.py10
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/tl_PH/__pycache__/__init__.cpython-311.pycbin0 -> 658 bytes
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/tr_TR/__init__.py33
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/tr_TR/__pycache__/__init__.cpython-311.pycbin0 -> 1791 bytes
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/uk_UA/__init__.py291
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/uk_UA/__pycache__/__init__.cpython-311.pycbin0 -> 7681 bytes
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/vi_VN/__init__.py24
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/vi_VN/__pycache__/__init__.cpython-311.pycbin0 -> 1477 bytes
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/zh_CN/__init__.py47
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/zh_CN/__pycache__/__init__.cpython-311.pycbin0 -> 1528 bytes
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/zh_TW/__init__.py19
-rw-r--r--venv/lib/python3.11/site-packages/faker/providers/automotive/zh_TW/__pycache__/__init__.cpython-311.pycbin0 -> 739 bytes
94 files changed, 3031 insertions, 0 deletions
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/__init__.py b/venv/lib/python3.11/site-packages/faker/providers/automotive/__init__.py
new file mode 100644
index 0000000..1f89d37
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/__init__.py
@@ -0,0 +1,63 @@
+import re
+
+from string import ascii_uppercase
+
+from .. import BaseProvider, ElementsType
+
+localized = True
+
+
+def calculate_vin_str_weight(s: str, weight_factor: list) -> int:
+ """
+ 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)
+ """
+
+ def _get_char_weight(c: str) -> int:
+ """A=1, B=2, ...., I=9,
+ J=1, K=2, ..., R=9,
+ S=2, T=3, ..., Z=9
+ """
+ if ord(c) <= 64: # 0-9
+ return int(c)
+ if ord(c) <= 73: # A-I
+ return ord(c) - 64
+ if ord(c) <= 82: # J-R
+ return ord(c) - 73
+ # S-Z
+ return ord(c) - 81
+
+ res = 0
+ for i, c in enumerate(s):
+ res += _get_char_weight(c) * weight_factor[i] if i < len(weight_factor) else 0
+ return res
+
+
+class Provider(BaseProvider):
+ """Implement default automotive provider for Faker."""
+
+ license_formats: ElementsType = ()
+
+ def license_plate(self) -> str:
+ """Generate a license plate."""
+ temp = re.sub(
+ r"\?",
+ lambda x: self.random_element(ascii_uppercase),
+ self.random_element(self.license_formats),
+ )
+ return self.numerify(temp)
+
+ def vin(self) -> str:
+ """Generate vin number."""
+ vin_chars = "1234567890ABCDEFGHJKLMNPRSTUVWXYZ" # I, O, Q are restricted
+ front_part = self.bothify("????????", letters=vin_chars)
+ rear_part = self.bothify("????????", letters=vin_chars)
+ front_part_weight = calculate_vin_str_weight(front_part, [8, 7, 6, 5, 4, 3, 2, 10])
+ rear_part_weight = calculate_vin_str_weight(rear_part, [9, 8, 7, 6, 5, 4, 3, 2])
+ checksum = (front_part_weight + rear_part_weight) % 11
+ checksum_char = "X" if checksum == 10 else str(checksum)
+ return front_part + checksum_char + rear_part
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/__pycache__/__init__.cpython-311.pyc b/venv/lib/python3.11/site-packages/faker/providers/automotive/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000..37f7d3e
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/__pycache__/__init__.cpython-311.pyc
Binary files differ
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/ar_BH/__init__.py b/venv/lib/python3.11/site-packages/faker/providers/automotive/ar_BH/__init__.py
new file mode 100644
index 0000000..672b941
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/ar_BH/__init__.py
@@ -0,0 +1,12 @@
+from .. import Provider as AutomotiveProvider
+
+
+class Provider(AutomotiveProvider):
+ """Implement automotive provider for ``ar_BH`` locale.
+
+ Source:
+
+ - https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Bahrain
+ """
+
+ license_formats = ("######",)
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/ar_BH/__pycache__/__init__.cpython-311.pyc b/venv/lib/python3.11/site-packages/faker/providers/automotive/ar_BH/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000..1f78dce
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/ar_BH/__pycache__/__init__.cpython-311.pyc
Binary files differ
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/ar_JO/__init__.py b/venv/lib/python3.11/site-packages/faker/providers/automotive/ar_JO/__init__.py
new file mode 100644
index 0000000..c258108
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/ar_JO/__init__.py
@@ -0,0 +1,53 @@
+from .. import Provider as AutomotiveProvider
+
+
+class Provider(AutomotiveProvider):
+ """Implement automotive provider for ``ar_JO`` locale.
+
+ Sources:
+
+ - https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Jordan
+ """
+
+ license_formats = (
+ "{{initials}}-####",
+ "{{initials}}-#####",
+ )
+
+ def initials(self) -> str:
+ """Generate an initial number for license plates."""
+ return self.random_element(
+ [
+ "1", # Ministers
+ "2",
+ "3", # Parliament
+ "5", # General Government
+ "6", # Aqaba free zone
+ "7",
+ "8", # Diplomatic
+ "9", # Temporary
+ "10",
+ "23", # Passenger cars
+ "38",
+ "39", # Crew cabs
+ "41",
+ "42", # Light goods vehicles
+ "44", # Tractors
+ "46", # Motorcycles and scooters
+ "50", # Taxi
+ "56", # Small buses
+ "58", # Coaches
+ "60", # HGVs
+ "70", # Rental Cars
+ "71", # Trailer
+ "90", # Army
+ "95", # Ambulance
+ "96", # Gendarmerie
+ "99", # Police
+ ]
+ )
+
+ def license_plate(self) -> str:
+ """Generate a license plate."""
+ pattern: str = self.random_element(self.license_formats)
+ return self.numerify(self.generator.parse(pattern))
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/ar_JO/__pycache__/__init__.cpython-311.pyc b/venv/lib/python3.11/site-packages/faker/providers/automotive/ar_JO/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000..e8a2ce9
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/ar_JO/__pycache__/__init__.cpython-311.pyc
Binary files differ
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/ar_PS/__init__.py b/venv/lib/python3.11/site-packages/faker/providers/automotive/ar_PS/__init__.py
new file mode 100644
index 0000000..2d9f3f4
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/ar_PS/__init__.py
@@ -0,0 +1,64 @@
+from .. import Provider as AutomotiveProvider
+
+
+class Provider(AutomotiveProvider):
+ """Implement automotive provider for ``ar_PS`` locale.
+
+ Sources:
+
+ - https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_the_Palestinian_National_Authority
+ """
+
+ license_formats = (
+ # Private vehicles
+ "{{district}}-####-3#",
+ "{{district}}-####-4#",
+ "{{district}}-####-7#",
+ "{{district}}-####-9#",
+ # Public transport
+ "{{district}}-####-30",
+ # Authority vehicles
+ "####",
+ # New police vehicles
+ "####-99",
+ # Gaza strip after 2012
+ # Private
+ "1-####-0#",
+ "3-####-0#",
+ # Commercial
+ "1-####-1#",
+ "3-####-1#",
+ # Public
+ "1-####-2#",
+ "3-####-2#",
+ # Municipal
+ "1-####-4#",
+ "3-####-4#",
+ # Governmental, and Governmental personal vehicles
+ "1-####-5#",
+ "3-####-5#",
+ )
+
+ def district(self) -> str:
+ """Generate a district code for license plates."""
+ return self.random_element(
+ [
+ # Gaza Strip
+ "1",
+ "3",
+ # Northern West Bank (Nablus, Tulkarm, Qalqilya, Jenin)
+ "4",
+ "7",
+ # Central West Bank (Ramallah, Jerusalem, Jericho)
+ "5",
+ "6",
+ # Southern West Bank (Bethlehem, Hebron)
+ "8",
+ "9",
+ ]
+ )
+
+ def license_plate(self) -> str:
+ """Generate a license plate."""
+ pattern: str = self.random_element(self.license_formats)
+ return self.numerify(self.generator.parse(pattern))
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/ar_PS/__pycache__/__init__.cpython-311.pyc b/venv/lib/python3.11/site-packages/faker/providers/automotive/ar_PS/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000..5e2871b
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/ar_PS/__pycache__/__init__.cpython-311.pyc
Binary files differ
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/ar_SA/__init__.py b/venv/lib/python3.11/site-packages/faker/providers/automotive/ar_SA/__init__.py
new file mode 100644
index 0000000..6b7ee49
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/ar_SA/__init__.py
@@ -0,0 +1,89 @@
+import re
+
+from .. import Provider as AutomotiveProvider
+
+
+class Provider(AutomotiveProvider):
+ """Implement automotive provider for ``ar_SA`` locale.
+
+ Sources:
+
+ - https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Saudi_Arabia
+
+ .. |license_plate_en| replace::
+ :meth:`license_plate_en()`
+ """
+
+ LICENSE_FORMAT_EN = "#### ???"
+ LICENSE_FORMAT_AR = "? ? ? ####"
+
+ PLATE_CHARS_EN = "ABDEGHJKLNRSTUVXZ"
+ PLATE_CHARS_AR = "أبدعقهحكلنرسطوىصم"
+
+ PLATE_MAP = {
+ "A": "ا",
+ "B": "ب",
+ "D": "د",
+ "E": "ع",
+ "G": "ق",
+ "H": "ه",
+ "J": "ح",
+ "K": "ك",
+ "L": "ل",
+ "N": "ن",
+ "R": "ر",
+ "S": "س",
+ "T": "ط",
+ "U": "و",
+ "V": "ى",
+ "X": "ص",
+ "Z": "م",
+ "0": "٠",
+ "1": "١",
+ "2": "٢",
+ "3": "٣",
+ "4": "٤",
+ "5": "٥",
+ "6": "٦",
+ "7": "٧",
+ "8": "٨",
+ "9": "٩",
+ }
+
+ def license_plate_en(self) -> str:
+ """Generate a license plate in Latin/Western characters."""
+ return self.bothify(
+ self.LICENSE_FORMAT_EN,
+ letters=self.PLATE_CHARS_EN,
+ )
+
+ def license_plate_ar(self) -> str:
+ """Generate a license plate in Arabic characters.
+
+ This method first generates a license plate in Latin/Western characters
+ using |license_plate_en|, and the result is translated internally to
+ generate the Arabic counterpart which serves as this method's return
+ value.
+ """
+ english_plate = self.license_plate_en()
+ return self._translate_license_plate(english_plate)
+
+ def _translate_license_plate(self, license_plate: str) -> str:
+ nums = list(reversed(license_plate[0:4]))
+ chars = list(license_plate[5:8])
+
+ numerated = re.sub(
+ r"\#",
+ lambda x: self.PLATE_MAP[nums.pop()],
+ self.LICENSE_FORMAT_AR,
+ )
+ ar_plate = re.sub(
+ r"\?",
+ lambda x: self.PLATE_MAP[chars.pop()],
+ numerated,
+ )
+
+ return ar_plate
+
+ def license_plate(self, ar: bool = True) -> str:
+ return self.license_plate_ar() if ar else self.license_plate_en()
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/ar_SA/__pycache__/__init__.cpython-311.pyc b/venv/lib/python3.11/site-packages/faker/providers/automotive/ar_SA/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000..45959dc
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/ar_SA/__pycache__/__init__.cpython-311.pyc
Binary files differ
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/az_AZ/__init__.py b/venv/lib/python3.11/site-packages/faker/providers/automotive/az_AZ/__init__.py
new file mode 100644
index 0000000..a866f36
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/az_AZ/__init__.py
@@ -0,0 +1,97 @@
+import re
+
+from .. import Provider as AutoProvider
+
+
+class Provider(AutoProvider):
+ """Implement license formats for ``az_AZ`` locale."""
+
+ license_formats = ("##-??-###",)
+ ascii_uppercase_azerbaijan = "ABCDEFGHXIJKQLMNOPRSTUVYZ"
+ license_plate_initial_numbers = (
+ "01",
+ "02",
+ "03",
+ "04",
+ "05",
+ "06",
+ "07",
+ "08",
+ "09",
+ "10",
+ "90",
+ "11",
+ "12",
+ "14",
+ "15",
+ "16",
+ "17",
+ "18",
+ "19",
+ "20",
+ "21",
+ "22",
+ "23",
+ "24",
+ "25",
+ "26",
+ "27",
+ "28",
+ "29",
+ "30",
+ "31",
+ "32",
+ "33",
+ "34",
+ "35",
+ "36",
+ "37",
+ "38",
+ "39",
+ "40",
+ "41",
+ "42",
+ "43",
+ "44",
+ "45",
+ "46",
+ "47",
+ "48",
+ "49",
+ "50",
+ "51",
+ "52",
+ "53",
+ "54",
+ "55",
+ "56",
+ "57",
+ "58",
+ "59",
+ "60",
+ "61",
+ "62",
+ "63",
+ "64",
+ "65",
+ "66",
+ "67",
+ "68",
+ "69",
+ "70",
+ "71",
+ "72",
+ "77",
+ "85",
+ )
+
+ def license_plate(self) -> str:
+ """Generate a license plate."""
+ temp = re.sub(
+ r"\?",
+ lambda x: self.random_element(self.ascii_uppercase_azerbaijan),
+ self.random_element(self.license_formats),
+ )
+ temp = temp.replace("##", self.random_element(self.license_plate_initial_numbers), 1)
+ # temp = temp.format(self.random_element(range(1, 999)))
+ return self.numerify(temp)
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/az_AZ/__pycache__/__init__.cpython-311.pyc b/venv/lib/python3.11/site-packages/faker/providers/automotive/az_AZ/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000..1ee63e8
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/az_AZ/__pycache__/__init__.cpython-311.pyc
Binary files differ
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/bn_BD/__init__.py b/venv/lib/python3.11/site-packages/faker/providers/automotive/bn_BD/__init__.py
new file mode 100644
index 0000000..807b1b6
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/bn_BD/__init__.py
@@ -0,0 +1,253 @@
+from faker.providers.person.bn_BD import translate_to_bengali_digits
+
+from .. import Provider as AutomotiveProvider
+
+
+class Provider(AutomotiveProvider):
+ """Implement automotive provider for ``bn_BD`` locale.
+
+ Sources:
+
+ - https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Bangladesh
+ """
+
+ # noinspection DuplicatedCode
+ cities = (
+ "বরগুনা",
+ "বরিশাল",
+ "বরিশাল মেট্রো",
+ "ভোলা",
+ "বান্দরবান",
+ "ব্রাহ্মণবাড়িয়া",
+ "বাগেরহাট",
+ "বগুড়া",
+ "চাঁদপুর",
+ "চট্টগ্রাম",
+ "চট্ট মেট্রো",
+ "কুমিল্লা",
+ "কক্সবাজার",
+ "চুয়াডাঙ্গা",
+ "ঢাকা",
+ "ঢাকা মেট্রো",
+ "দিনাজপুর",
+ "ফরিদপুর",
+ "ফেনী",
+ "গাজীপুর",
+ "গোপালগঞ্জ",
+ "গাইবান্ধা",
+ "হবিগঞ্জ",
+ "ঝালকাঠি",
+ "যশোর",
+ "ঝিনাইদহ",
+ "জামালপুর",
+ "জয়পুরহাট",
+ "খাগড়াছড়ি",
+ "কিশোরগঞ্জ",
+ "খুলনা",
+ "খুলনা মেট্রো",
+ "কুষ্টিয়া",
+ "কুড়িগ্রাম",
+ "লক্ষ্মীপুর",
+ "লালমনিরহাট",
+ "মাদারীপুর",
+ "মানিকগঞ্জ",
+ "মুন্সীগঞ্জ",
+ "মাগুরা",
+ "মেহেরপুর",
+ "ময়মনসিংহ",
+ "মৌলভীবাজার",
+ "নোয়াখালী",
+ "নারায়ণগঞ্জ",
+ "নরসিংদী",
+ "নড়াইল",
+ "নেত্রকোণা",
+ "নওগাঁ",
+ "নাটোর",
+ "চাঁপাইনবাবগঞ্জ",
+ "নীলফামারী",
+ "পটুয়াখালী",
+ "পিরোজপুর",
+ "পাবনা",
+ "পঞ্চগড়",
+ "রাঙ্গামাটি",
+ "রাজবাড়ী",
+ "রাজশাহী",
+ "রাজ মেট্রো",
+ "রংপুর",
+ "শরীয়তপুর",
+ "সাতক্ষীরা",
+ "শেরপুর",
+ "সিরাজগঞ্জ",
+ "সুনামগঞ্জ",
+ "সিলেট",
+ "সিলেট মেট্রো",
+ "টাঙ্গাইল",
+ "ঠাকুরগাঁও",
+ )
+
+ vehicle_category_letters = (
+ "অ",
+ "ই",
+ "উ",
+ "এ",
+ "ক",
+ "খ",
+ "গ",
+ "ঘ",
+ "ঙ",
+ "চ",
+ "ছ",
+ "জ",
+ "ঝ",
+ "ত",
+ "থ",
+ "ঢ",
+ "ড",
+ "ট",
+ "ঠ",
+ "দ",
+ "ধ",
+ "ন",
+ "প",
+ "ফ",
+ "ব",
+ "ভ",
+ "ম",
+ "য",
+ "র",
+ "ল",
+ "শ",
+ "স",
+ "হ",
+ )
+
+ vehicle_category_numbers = (
+ "১১",
+ "১২",
+ "১৩",
+ "১৪",
+ "১৫",
+ "১৬",
+ "১৭",
+ "১৮",
+ "১৯",
+ "২০",
+ "২১",
+ "২২",
+ "২৩",
+ "২৪",
+ "২৫",
+ "২৬",
+ "২৭",
+ "২৮",
+ "২৯",
+ "৩০",
+ "৩১",
+ "৩২",
+ "৩৩",
+ "৩৪",
+ "৩৫",
+ "৩৬",
+ "৩৭",
+ "৩৮",
+ "৩৯",
+ "৪০",
+ "৪১",
+ "৪২",
+ "৪৩",
+ "৪৪",
+ "৪৫",
+ "৪৬",
+ "৪৭",
+ "৪৮",
+ "৪৯",
+ "৫০",
+ "৫১",
+ "৫২",
+ "৫৩",
+ "৫৪",
+ "৫৫",
+ "৫৬",
+ "৫৭",
+ "৫৮",
+ "৫৯",
+ "৬০",
+ "৬১",
+ "৬২",
+ "৬৩",
+ "৬৪",
+ "৬৫",
+ "৬৬",
+ "৬৭",
+ "৬৮",
+ "৬৯",
+ "৭০",
+ "৭১",
+ "৭২",
+ "৭৩",
+ "৭৪",
+ "৭৫",
+ "৭৬",
+ "৭৭",
+ "৭৮",
+ "৭৯",
+ "৮০",
+ "৮১",
+ "৮২",
+ "৮৩",
+ "৮৪",
+ "৮৫",
+ "৮৬",
+ "৮৭",
+ "৮৮",
+ "৮৯",
+ "৯০",
+ "৯১",
+ "৯২",
+ "৯৩",
+ "৯৪",
+ "৯৫",
+ "৯৬",
+ "৯৭",
+ "৯৮",
+ "৯৯",
+ )
+
+ vehicle_serial_number_formats = ("%###",)
+
+ license_plate_formats = (
+ "{{city_name}}-{{vehicle_category_letter}} {{vehicle_category_number}}-{{vehicle_serial_number}}",
+ )
+
+ def city_name(self) -> str:
+ """
+ :example: 'ঢাকা মেট্রো'
+ """
+ return self.random_element(self.cities)
+
+ def vehicle_category_letter(self) -> str:
+ """
+ :example: 'ব'
+ """
+ return self.random_element(self.vehicle_category_letters)
+
+ def vehicle_category_number(self) -> str:
+ """
+ :example: '১১'
+ """
+ return self.random_element(self.vehicle_category_numbers)
+
+ def vehicle_serial_number(self) -> str:
+ """
+ Generate a 4 digits vehicle serial number.
+ :example: '৫৪৩২'
+ """
+ return translate_to_bengali_digits(self.numerify(self.random_element(self.vehicle_serial_number_formats)))
+
+ def license_plate(self) -> str:
+ """
+ Generate a license plate.
+ :example: 'বরিশাল-ভ ৬৭-৪৫৯৩'
+ """
+ pattern: str = self.random_element(self.license_plate_formats)
+ return self.generator.parse(pattern)
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/bn_BD/__pycache__/__init__.cpython-311.pyc b/venv/lib/python3.11/site-packages/faker/providers/automotive/bn_BD/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000..5756c27
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/bn_BD/__pycache__/__init__.cpython-311.pyc
Binary files differ
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/da_DK/__init__.py b/venv/lib/python3.11/site-packages/faker/providers/automotive/da_DK/__init__.py
new file mode 100644
index 0000000..8eabda1
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/da_DK/__init__.py
@@ -0,0 +1,9 @@
+from .. import Provider as AutomotiveProvider
+
+
+class Provider(AutomotiveProvider):
+ """Implement automotive provider for ``da_DK`` locale.
+ Source: https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Denmark
+ """
+
+ license_formats = ("?? ## ###",)
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/da_DK/__pycache__/__init__.cpython-311.pyc b/venv/lib/python3.11/site-packages/faker/providers/automotive/da_DK/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000..7f1b7b9
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/da_DK/__pycache__/__init__.cpython-311.pyc
Binary files differ
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/de_CH/__init__.py b/venv/lib/python3.11/site-packages/faker/providers/automotive/de_CH/__init__.py
new file mode 100644
index 0000000..d6cfcbd
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/de_CH/__init__.py
@@ -0,0 +1,44 @@
+from .. import Provider as AutomotiveProvider
+
+
+class Provider(AutomotiveProvider):
+ """Implement automotive provider for ``de_CH`` locale.
+
+ Sources:
+
+ - https://de.wikipedia.org/wiki/Kontrollschild_(Schweiz)#Kantone
+ """
+
+ __canton = (
+ ("AG", "%## ###"),
+ ("AR", "%# ###"),
+ ("AI", "%# ###"),
+ ("BL", "%## ###"),
+ ("BS", "%## ###"),
+ ("BE", "%## ###"),
+ ("FR", "%## ###"),
+ ("GE", "%## ###"),
+ ("GL", "%# ###"),
+ ("GR", "%## ###"),
+ ("JU", "%# ###"),
+ ("LU", "%## ###"),
+ ("NE", "%## ###"),
+ ("NW", "%# ###"),
+ ("OW", "%# ###"),
+ ("SH", "%# ###"),
+ ("SZ", "%## ###"),
+ ("SO", "%## ###"),
+ ("SG", "%## ###"),
+ ("TI", "%## ###"),
+ ("TG", "%## ###"),
+ ("UR", "%# ###"),
+ ("VD", "%## ###"),
+ ("VS", "%## ###"),
+ ("ZG", "%## ###"),
+ ("ZH", "%## ###"),
+ )
+
+ def license_plate(self) -> str:
+ """Generate a license plate."""
+ plate: tuple = self.random_element(self.__canton)
+ return f"{plate[0]}-{self.numerify(plate[1])}".strip()
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/de_CH/__pycache__/__init__.cpython-311.pyc b/venv/lib/python3.11/site-packages/faker/providers/automotive/de_CH/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000..23bfbe2
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/de_CH/__pycache__/__init__.cpython-311.pyc
Binary files differ
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/de_DE/__init__.py b/venv/lib/python3.11/site-packages/faker/providers/automotive/de_DE/__init__.py
new file mode 100644
index 0000000..7bf5bb7
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/de_DE/__init__.py
@@ -0,0 +1,430 @@
+import string
+
+from .. import Provider as AutomotiveProvider
+
+
+class Provider(AutomotiveProvider):
+ """Implement automotive provider for ``de_DE`` locale.
+
+ Sources:
+
+ - http://berlin.de/daten/liste-der-kfz-kennzeichen/kfz-kennz-d.csv
+ """
+
+ license_plate_prefix = (
+ "A",
+ "AA",
+ "AB",
+ "ABI",
+ "ABG",
+ "AC",
+ "AE",
+ "AIC",
+ "AK",
+ "AM",
+ "AN",
+ "AÖ",
+ "AP",
+ "AS",
+ "AUR",
+ "AW",
+ "AZ",
+ "B",
+ "BA",
+ "BAD",
+ "BAR",
+ "BB",
+ "BC",
+ "BD",
+ "BGL",
+ "BI",
+ "BIR",
+ "BIT",
+ "BK",
+ "BL",
+ "BLK",
+ "BM",
+ "BN",
+ "BO",
+ "BOR",
+ "BOT",
+ "BP",
+ "BRA",
+ "BRB",
+ "BS",
+ "BT",
+ "BTF",
+ "BÜS",
+ "BW",
+ "BWL",
+ "BYL",
+ "BZ",
+ "C",
+ "CB",
+ "CE",
+ "CHA",
+ "CO",
+ "COC",
+ "COE",
+ "CUX",
+ "CW",
+ "D",
+ "DA",
+ "DAH",
+ "DAN",
+ "DAU",
+ "DBR",
+ "DD",
+ "DE",
+ "DEG",
+ "DEL",
+ "DGF",
+ "DH",
+ "DL",
+ "DLG",
+ "DN",
+ "Do",
+ "DON",
+ "DU",
+ "DÜW",
+ "E",
+ "EA",
+ "EB",
+ "EBE",
+ "ED",
+ "EE",
+ "EF",
+ "EI",
+ "EIC",
+ "EL",
+ "EM",
+ "EMD",
+ "EMS",
+ "EN",
+ "ER",
+ "ERB",
+ "ERH",
+ "ERZ",
+ "ES",
+ "ESW",
+ "EU",
+ "F",
+ "FB",
+ "FD",
+ "FDS",
+ "FF",
+ "FFB",
+ "FG",
+ "FL",
+ "FN",
+ "FO",
+ "FR",
+ "FRG",
+ "FRI",
+ "FS",
+ "FT",
+ "FÜ",
+ "G",
+ "GAP",
+ "GE",
+ "GER",
+ "GF",
+ "GG",
+ "GI",
+ "GL",
+ "GM",
+ "GÖ",
+ "GP",
+ "GR",
+ "GRZ",
+ "GS",
+ "GT",
+ "GTH",
+ "GÜ",
+ "GZ",
+ "H",
+ "HA",
+ "HAL",
+ "HAM",
+ "HAS",
+ "HB",
+ "HBN",
+ "HD",
+ "HDH",
+ "HE",
+ "HEF",
+ "HEI",
+ "HEL",
+ "HER",
+ "HF",
+ "HG",
+ "HGW",
+ "HH",
+ "HI",
+ "HL",
+ "HM",
+ "HN",
+ "HO",
+ "HOL",
+ "HOM",
+ "HP",
+ "HR",
+ "HRO",
+ "HS",
+ "HSK",
+ "HST",
+ "HU",
+ "HVL",
+ "HWI",
+ "HX",
+ "HZ",
+ "IGB",
+ "IK",
+ "IN",
+ "IZ",
+ "J",
+ "JL",
+ "K",
+ "KA",
+ "KB",
+ "KC",
+ "KE",
+ "KEH",
+ "KF",
+ "KG",
+ "KH",
+ "KI",
+ "KIB",
+ "KL",
+ "KLE",
+ "KN",
+ "KO",
+ "KR",
+ "KS",
+ "KT",
+ "KU",
+ "KÜN",
+ "KUS",
+ "KYF",
+ "L",
+ "LA",
+ "LAU",
+ "LB",
+ "LD",
+ "LDK",
+ "LDS",
+ "LER",
+ "LEV",
+ "LG",
+ "LI",
+ "LIF",
+ "LIP",
+ "LL",
+ "LM",
+ "LÖ",
+ "LOS",
+ "LRO",
+ "LSA",
+ "LSN",
+ "LU",
+ "LWL",
+ "M",
+ "MA",
+ "MB",
+ "MD",
+ "ME",
+ "MEI",
+ "MG",
+ "MI",
+ "MIL",
+ "MK",
+ "MKK",
+ "MM",
+ "MN",
+ "MOL",
+ "MOS",
+ "MR",
+ "MS",
+ "MSH",
+ "MSP",
+ "MST",
+ "MTK",
+ "MÜ",
+ "MÜR",
+ "MVL",
+ "MYK",
+ "MZ",
+ "MZG",
+ "N",
+ "NB",
+ "ND",
+ "NDH",
+ "NE",
+ "NEA",
+ "NES",
+ "NEW",
+ "NF",
+ "NI",
+ "NK",
+ "NL",
+ "NM",
+ "NMS",
+ "NOH",
+ "NOM",
+ "NR",
+ "NU",
+ "NVP",
+ "NW",
+ "NWM",
+ "OA",
+ "OAL",
+ "OB",
+ "OD",
+ "OE",
+ "OF",
+ "OG",
+ "OH",
+ "OHA",
+ "OHV",
+ "OHZ",
+ "OL",
+ "OPR",
+ "OS",
+ "OSL",
+ "OVP",
+ "P",
+ "PA",
+ "PAF",
+ "PAN",
+ "PB",
+ "PCH",
+ "PE",
+ "PF",
+ "PI",
+ "PIR",
+ "PLÖ",
+ "PM",
+ "PR",
+ "PS",
+ "R",
+ "RA",
+ "RD",
+ "RE",
+ "REG",
+ "RO",
+ "ROS",
+ "ROW",
+ "RP",
+ "RPL",
+ "RS",
+ "RT",
+ "RÜD",
+ "RÜG",
+ "RV",
+ "RW",
+ "RZ",
+ "S",
+ "SAD",
+ "SAL",
+ "SAW",
+ "SB",
+ "SC",
+ "SDL",
+ "SE",
+ "SG",
+ "SH",
+ "SHA",
+ "SHG",
+ "SHK",
+ "SHL",
+ "SI",
+ "SIG",
+ "SIM",
+ "SK",
+ "SL",
+ "SLF",
+ "SLK",
+ "SLS",
+ "SM",
+ "SN",
+ "SO",
+ "SOK",
+ "SÖM",
+ "SON",
+ "SP",
+ "SPN",
+ "SR",
+ "ST",
+ "STA",
+ "STD",
+ "SU",
+ "SÜW",
+ "SW",
+ "SZ",
+ "TDO",
+ "TBB",
+ "TF",
+ "TG",
+ "THL",
+ "THW",
+ "TIR",
+ "TÖL",
+ "TR",
+ "TS",
+ "TÜ",
+ "TUT",
+ "UE",
+ "UL",
+ "UM",
+ "UN",
+ "V",
+ "VB",
+ "VEC",
+ "VER",
+ "VIE",
+ "VK",
+ "VR",
+ "VS",
+ "W",
+ "WAF",
+ "WAK",
+ "WB",
+ "WE",
+ "WEN",
+ "WES",
+ "WF",
+ "WHV",
+ "WI",
+ "WIL",
+ "WL",
+ "WM",
+ "WN",
+ "WND",
+ "WO",
+ "WOB",
+ "WST",
+ "WT",
+ "WTM",
+ "WÜ",
+ "WUG",
+ "WUN",
+ "WW",
+ "WZ",
+ "Y",
+ "Z",
+ "ZW",
+ )
+
+ license_plate_suffix = (
+ "-??-%@@@",
+ "-?-%@@@",
+ )
+
+ def license_plate(self) -> str:
+ """Generate a license plate."""
+ prefix: str = self.random_element(self.license_plate_prefix)
+ suffix = self.bothify(
+ self.random_element(self.license_plate_suffix),
+ letters=string.ascii_uppercase,
+ )
+ return prefix + suffix
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/de_DE/__pycache__/__init__.cpython-311.pyc b/venv/lib/python3.11/site-packages/faker/providers/automotive/de_DE/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000..28500ed
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/de_DE/__pycache__/__init__.cpython-311.pyc
Binary files differ
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/el_GR/__init__.py b/venv/lib/python3.11/site-packages/faker/providers/automotive/el_GR/__init__.py
new file mode 100644
index 0000000..98067dd
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/el_GR/__init__.py
@@ -0,0 +1,23 @@
+import re
+
+from .. import Provider as AutomotiveProvider
+
+
+class Provider(AutomotiveProvider):
+ """Implement automotive provider for ``el_GR`` locale."""
+
+ uppercase_letters = "ABEZHIKMNOPTYX"
+
+ license_formats = (
+ "??? ####",
+ "?? ####",
+ )
+
+ def license_plate(self) -> str:
+ """Generate a license plate."""
+ temp = re.sub(
+ r"\?",
+ lambda x: self.random_element(self.uppercase_letters),
+ self.random_element(self.license_formats),
+ )
+ return self.numerify(temp)
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/el_GR/__pycache__/__init__.cpython-311.pyc b/venv/lib/python3.11/site-packages/faker/providers/automotive/el_GR/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000..0983d7e
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/el_GR/__pycache__/__init__.cpython-311.pyc
Binary files differ
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/en_CA/__init__.py b/venv/lib/python3.11/site-packages/faker/providers/automotive/en_CA/__init__.py
new file mode 100644
index 0000000..d918d4d
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/en_CA/__init__.py
@@ -0,0 +1,45 @@
+from .. import Provider as AutomotiveProvider
+
+
+class Provider(AutomotiveProvider):
+ """Implement automotive provider for ``en_CA`` locale.
+
+ Sources:
+
+ - https://www.revolvy.com/main/index.php?s=Canadian%20licence%20plate%20designs%20and%20serial%20formats
+ """
+
+ license_formats = (
+ # Alberta
+ "???-####",
+ # BC
+ "??# ##?",
+ "?? ####",
+ # Manitoba
+ "??? ###",
+ # New Brunswick
+ "??? ###",
+ # Newfoundland and Labrador
+ "??? ###",
+ # NWT
+ "######",
+ # Nova Scotia
+ "??? ###",
+ # Nunavut
+ "### ###",
+ # Ontario
+ "### ???",
+ "???? ###",
+ "??# ###",
+ "### #??",
+ "?? ####",
+ "GV??-###",
+ # PEI
+ "## ##??",
+ # Quebec
+ "?## ???",
+ # Saskatchewan
+ "### ???",
+ # Yukon
+ "???##",
+ )
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/en_CA/__pycache__/__init__.cpython-311.pyc b/venv/lib/python3.11/site-packages/faker/providers/automotive/en_CA/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000..832b0d2
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/en_CA/__pycache__/__init__.cpython-311.pyc
Binary files differ
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/en_GB/__init__.py b/venv/lib/python3.11/site-packages/faker/providers/automotive/en_GB/__init__.py
new file mode 100644
index 0000000..ab96dd7
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/en_GB/__init__.py
@@ -0,0 +1,15 @@
+from .. import Provider as AutomotiveProvider
+
+
+class Provider(AutomotiveProvider):
+ """Implement automotive provider for ``en_GB`` locale.
+
+ Sources:
+
+ - https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_the_United_Kingdom
+ """
+
+ license_formats = (
+ "??## ???",
+ "??##???",
+ )
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/en_GB/__pycache__/__init__.cpython-311.pyc b/venv/lib/python3.11/site-packages/faker/providers/automotive/en_GB/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000..c8e3e02
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/en_GB/__pycache__/__init__.cpython-311.pyc
Binary files differ
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/en_NZ/__init__.py b/venv/lib/python3.11/site-packages/faker/providers/automotive/en_NZ/__init__.py
new file mode 100644
index 0000000..2802d62
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/en_NZ/__init__.py
@@ -0,0 +1,32 @@
+from .. import Provider as AutomotiveProvider
+
+
+class Provider(AutomotiveProvider):
+ """Implement automotive provider for ``en_NZ`` locale.
+
+ Sources:
+
+ - https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_New_Zealand
+ """
+
+ license_formats = (
+ # Old plates
+ "??%##",
+ "??%###",
+ "??%###",
+ # Three letters since 2002
+ "A??%##",
+ "B??%##",
+ "C??%##",
+ "D??%##",
+ "E??%##",
+ "F??%##",
+ "G??%##",
+ "H??%##",
+ "J??%##",
+ "K??%##",
+ "L??%##",
+ "M??%##",
+ # After 2018
+ "N??%##",
+ )
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/en_NZ/__pycache__/__init__.cpython-311.pyc b/venv/lib/python3.11/site-packages/faker/providers/automotive/en_NZ/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000..c73e502
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/en_NZ/__pycache__/__init__.cpython-311.pyc
Binary files differ
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/en_PH/__init__.py b/venv/lib/python3.11/site-packages/faker/providers/automotive/en_PH/__init__.py
new file mode 100644
index 0000000..71f05d3
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/en_PH/__init__.py
@@ -0,0 +1,70 @@
+from string import ascii_uppercase
+from typing import List
+
+from .. import Provider as AutomotiveProvider
+
+
+class Provider(AutomotiveProvider):
+ """Implement automotive provider for ``en_PH`` locale.
+
+ Vehicle registration in the Philippines has many controversies and is full
+ of quirks. On top of that, some terms are highly subject to interpretation
+ or to varying definitions when applied colloquially, e.g. "motor" usually
+ refers to either a machine's motor or a motorcycle, "vehicles" usually means
+ cars, SUVs, vans, and trucks but not motorcycles. Please read any additional
+ notes of individual methods for more details.
+
+ Sources:
+
+ - https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_the_Philippines
+ """
+
+ protocol_licenses = [str(x) for x in range(1, 18) if x != 15]
+ motorcycle_license_formats = [
+ "??####", # 1981 series
+ "??#####", # 2014 series
+ ]
+ automobile_license_formats = [
+ "???###", # 1981 series
+ "???####", # 2014 series
+ ]
+ license_formats = motorcycle_license_formats + automobile_license_formats
+
+ def _license_plate(self, license_format: List[str]) -> str:
+ return self.bothify(self.random_element(license_format), ascii_uppercase)
+
+ def protocol_license_plate(self) -> str:
+ """Generate a protocol license plate.
+
+ .. note::
+ High ranking government officials are entitled to use low numbered
+ protocol license plates.
+ """
+ return self.random_element(self.protocol_licenses)
+
+ def motorcycle_license_plate(self) -> str:
+ """Generate a motorcycle license plate.
+
+ .. note::
+ Motorcycles and any improvised vehicle with a motorcycle as its base
+ are issued motorcycle license plates.
+ """
+ return self._license_plate(self.motorcycle_license_formats)
+
+ def automobile_license_plate(self) -> str:
+ """Generate an automobile license plate.
+
+ .. note::
+ Cars, SUVs, vans, trucks, and other 4-wheeled civilian vehicles are
+ considered automobiles for this purpose.
+ """
+ return self._license_plate(self.automobile_license_formats)
+
+ def license_plate(self) -> str:
+ """Generate a license plate.
+
+ .. note::
+ This method will never generate protocol plates, because such plates
+ are only for specific use cases.
+ """
+ return self._license_plate(self.license_formats)
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/en_PH/__pycache__/__init__.cpython-311.pyc b/venv/lib/python3.11/site-packages/faker/providers/automotive/en_PH/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000..8183f69
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/en_PH/__pycache__/__init__.cpython-311.pyc
Binary files differ
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/en_US/__init__.py b/venv/lib/python3.11/site-packages/faker/providers/automotive/en_US/__init__.py
new file mode 100644
index 0000000..5cd6a01
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/en_US/__init__.py
@@ -0,0 +1,168 @@
+from .. import Provider as AutomotiveProvider
+
+
+class Provider(AutomotiveProvider):
+ """Implement automotive provider for ``en_US`` locale.
+
+ Sources:
+
+ - https://en.wikipedia.org/wiki/United_States_license_plate_designs_and_serial_formats
+ """
+
+ license_formats = (
+ # Alabama
+ "#??####",
+ "##??###",
+ # Alaska
+ "### ???",
+ # American Samoa
+ "####",
+ # Arizona
+ "???####",
+ # Arkansas
+ "### ???",
+ "###???",
+ # California
+ "#???###",
+ # Colarado
+ "###-???",
+ "???-###",
+ # Conneticut
+ "###-???",
+ # Delaware
+ "######",
+ # DC
+ "??-####",
+ # Florda
+ "??? ?##",
+ "### ???",
+ "?## #??",
+ "### #??",
+ # Georgia
+ "???####",
+ # Guam
+ "?? ####",
+ # Hawaii
+ "??? ###",
+ "H?? ###",
+ "Z?? ###",
+ "K?? ###",
+ "L?? ###",
+ "M?? ###",
+ # Idaho
+ "? ######",
+ "#? #####",
+ "#? ?####",
+ "#? ??###",
+ "#? #?#???",
+ "#? ####?",
+ "##? ####",
+ # Illinois
+ "?? #####",
+ "??# ####",
+ # Indiana
+ "###?",
+ "###??",
+ "###???",
+ # Iowa
+ "??? ###",
+ # Kansas
+ "### ???",
+ # Kentucky
+ "### ???",
+ # Louisiana
+ "### ???",
+ # Maine
+ "#### ??",
+ # Maryland
+ "#??####",
+ # Massachusetts
+ "#??? ##",
+ "#?? ###",
+ "### ??#",
+ "##? ?##",
+ # Michigan
+ "### ???",
+ "#?? ?##",
+ # Minnesota
+ "###-???",
+ # Mississippi
+ "??? ###",
+ # Missouri
+ "??# ?#?",
+ # Montana
+ "#-#####?",
+ "##-####?",
+ # Nebraska
+ "??? ###",
+ "#-?####",
+ "##-?###",
+ "##-??##",
+ # Nevada
+ "##?•###",
+ # New Hampshire
+ "### ####",
+ # New Jersey
+ "?##-???",
+ # New Mexico
+ "###-???",
+ "???-###",
+ # New York
+ "???-####",
+ # North Carolina
+ "###-????",
+ # North Dakota
+ "### ???",
+ # Nothern Mariana Islands
+ "??? ###",
+ # Ohio
+ "??? ####",
+ # Oklahoma
+ "???-###",
+ # Oregon
+ "### ???",
+ # Pennsylvania
+ "???-####",
+ # Peurto Rico
+ "???-###",
+ # Rhode Island
+ "###-###",
+ # South Carolina
+ "### #??",
+ # South Dakota
+ "#?? ###",
+ "#?? ?##",
+ "##? ###",
+ "##? ?##",
+ "##? ??#",
+ # Tennessee
+ "?##-##?",
+ # Texas
+ "???-####",
+ # Utah
+ "?## #??",
+ "?## #??",
+ # Vermont
+ "??? ###",
+ "##??#",
+ "#??##",
+ "###?#",
+ "#?###",
+ # US Virgin Islands
+ "??? ###",
+ # Virginia
+ "???-####",
+ # Washington
+ "???####",
+ "###-???",
+ # West Virginia
+ "#?? ###",
+ "??? ###",
+ # Wisconsin
+ "???-####",
+ "###-???",
+ # Wyoming
+ "#-#####",
+ "#-####?",
+ "##-#####",
+ )
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/en_US/__pycache__/__init__.cpython-311.pyc b/venv/lib/python3.11/site-packages/faker/providers/automotive/en_US/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000..299caf0
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/en_US/__pycache__/__init__.cpython-311.pyc
Binary files differ
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/es_AR/__init__.py b/venv/lib/python3.11/site-packages/faker/providers/automotive/es_AR/__init__.py
new file mode 100644
index 0000000..3177e64
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/es_AR/__init__.py
@@ -0,0 +1,87 @@
+from collections import OrderedDict
+from string import ascii_uppercase
+
+from .. import Provider as AutomotiveProvider
+
+
+class Provider(AutomotiveProvider):
+ """Implement automotive provider for ``es_AR`` locale.
+
+ Sources:
+
+ - https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Argentina
+
+ """
+
+ license_plate_old_format_first_letter = ascii_uppercase.replace("YZ", "")
+
+ license_plate_new_first_letter = OrderedDict(
+ [
+ ("A", 0.99),
+ ("B", 0.001),
+ ("C", 0.0001),
+ ("D", 0.00001),
+ ("E", 0.0000000001),
+ ]
+ )
+
+ license_plate_new_second_letter = OrderedDict(
+ [
+ ("A", 0.1),
+ ("B", 0.1),
+ ("C", 0.1),
+ ("D", 0.1),
+ ("E", 0.1),
+ ("F", 0.1),
+ ("G", 0.09),
+ ("H", 0.08),
+ ("I", 0.07),
+ ("J", 0.06),
+ ("K", 0.04),
+ ("L", 0.03),
+ ("M", 0.009),
+ ("N", 0.007),
+ ("O", 0.005),
+ ("P", 0.004),
+ ("Q", 0.001),
+ ("R", 0.0009),
+ ("S", 0.0008),
+ ("T", 0.0007),
+ ("U", 0.0006),
+ ("V", 0.0005),
+ ("W", 0.0003),
+ ("X", 0.0002),
+ ("Y", 0.0001),
+ ("Z", 0.00005),
+ ]
+ )
+
+ license_formats = OrderedDict(
+ [
+ ("{{license_plate_old}}", 0.6),
+ ("{{license_plate_mercosur}}", 0.4),
+ ]
+ )
+
+ def license_plate_old(self) -> str:
+ """Generate an old format license plate. Since 1995 to 2016"""
+ format = "??###"
+
+ first_letter: str = self.random_element(self.license_plate_old_format_first_letter)
+
+ return self.bothify(first_letter + format).upper()
+
+ def license_plate_mercosur(self) -> str:
+ """Generate an new plate with Mercosur format. Since 2016"""
+
+ first_letter: str = self.random_element(self.license_plate_new_first_letter)
+ second_letter: str = self.random_element(self.license_plate_new_second_letter)
+
+ format = "###??"
+ plate = first_letter + second_letter
+
+ return self.bothify(plate + format).upper()
+
+ def license_plate(self) -> str:
+ """Generate a license plate."""
+ return self.numerify(self.generator.parse(self.random_element(self.license_formats)))
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/es_AR/__pycache__/__init__.cpython-311.pyc b/venv/lib/python3.11/site-packages/faker/providers/automotive/es_AR/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000..e9b8d89
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/es_AR/__pycache__/__init__.cpython-311.pyc
Binary files differ
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/es_CL/__init__.py b/venv/lib/python3.11/site-packages/faker/providers/automotive/es_CL/__init__.py
new file mode 100644
index 0000000..0807ebb
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/es_CL/__init__.py
@@ -0,0 +1,66 @@
+# -*- coding: utf-8 -*-
+
+import re
+
+from collections import OrderedDict
+
+from .. import Provider as AutomotiveProvider
+
+
+class Provider(AutomotiveProvider):
+ """Implement automotive provider for ``es`` locale.
+
+ Sources:
+
+ - https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Chile
+
+ """
+
+ license_plate_old_format_first_letters = "ABCDFGHJKLPRSTVWXYZ"
+ license_plate_old_format_second_letters = "ABCDFGHIJKLPRSTVWXYZ"
+ license_plate_new_format_letters = "BCDFGHJKLPRSTVWXYZ"
+
+ license_formats = OrderedDict(
+ [
+ ("{{license_plate_new}}", 0.70),
+ ("{{license_plate_old}}", 0.20),
+ ("{{license_plate_police}}", 0.05),
+ ("{{license_plate_temporary}}", 0.04),
+ ("{{license_plate_diplomatic}}", 0.01),
+ ]
+ )
+
+ def license_plate_old(self) -> str:
+ """Generate an old format license plate."""
+ format = "-####"
+
+ letters = "".join(
+ (
+ self.random_element(self.license_plate_old_format_first_letters),
+ self.random_element(self.license_plate_old_format_second_letters),
+ )
+ )
+
+ return self.numerify(letters + format)
+
+ def license_plate_new(self) -> str:
+ format = "????-##"
+
+ temp = re.sub(r"\?", lambda x: self.random_element(self.license_plate_new_format_letters), format)
+ return self.numerify(temp)
+
+ def license_plate_police(self) -> str:
+ formats = ("RP-####", "Z-####")
+ return self.numerify(self.random_element(formats))
+
+ def license_plate_temporary(self) -> str:
+ format = "PR-###"
+ return self.numerify(format)
+
+ def license_plate_diplomatic(self) -> str:
+ formats = ("CC-####", "CD-####")
+ return self.numerify(self.random_element(formats))
+
+ def license_plate(self) -> str:
+ """Generate a license plate."""
+ return self.numerify(self.generator.parse(self.random_element(self.license_formats)))
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/es_CL/__pycache__/__init__.cpython-311.pyc b/venv/lib/python3.11/site-packages/faker/providers/automotive/es_CL/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000..5755f67
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/es_CL/__pycache__/__init__.cpython-311.pyc
Binary files differ
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/es_CO/__init__.py b/venv/lib/python3.11/site-packages/faker/providers/automotive/es_CO/__init__.py
new file mode 100644
index 0000000..27ee8f8
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/es_CO/__init__.py
@@ -0,0 +1,16 @@
+from collections import OrderedDict
+
+from .. import Provider as AutomotiveProvider
+
+
+class Provider(AutomotiveProvider):
+ license_formats = OrderedDict(
+ [
+ ("???###", 0.6),
+ ("???##?", 0.3),
+ ("T####", 0.03),
+ ("??####", 0.01),
+ ("R#####", 0.03),
+ ("S#####", 0.03),
+ ]
+ )
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/es_CO/__pycache__/__init__.cpython-311.pyc b/venv/lib/python3.11/site-packages/faker/providers/automotive/es_CO/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000..339a804
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/es_CO/__pycache__/__init__.cpython-311.pyc
Binary files differ
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/es_ES/__init__.py b/venv/lib/python3.11/site-packages/faker/providers/automotive/es_ES/__init__.py
new file mode 100644
index 0000000..d78c976
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/es_ES/__init__.py
@@ -0,0 +1,126 @@
+# -*- coding: utf-8 -*-
+
+import re
+
+from typing import Optional
+
+from .. import Provider as AutomotiveProvider
+
+
+class Provider(AutomotiveProvider):
+ """Implement automotive provider for ``es_ES`` locale.
+
+ Sources:
+
+ - https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Spain
+
+ .. |license_plate_unified| replace::
+ :meth:`license_plate_unified() <faker.providers.automotive.es_ES.Provider.license_plate_unified>`
+
+ .. |license_plate_by_province| replace::
+ :meth:`license_plate_by_province() <faker.providers.automotive.es_ES.Provider.license_plate_by_province>`
+ """
+
+ license_formats = (
+ # New format
+ "#### ???",
+ )
+
+ # New format suffix letters (excluding vocals and Q from ascii uppercase)
+ license_plate_new_format_suffix_letters = "BCDFGHJKLMNPRSTVWXYZ"
+
+ # Old format suffix letters (excluding Q and R from ascii uppercase)
+ license_plate_old_format_suffix_letters = "ABCDEFGHIJKLMNOPSTUVWXYZ"
+
+ # Province prefixes (for old format)
+ province_prefix = (
+ "A", # Alicante
+ "AB", # Albacete
+ "AL", # Almería
+ "AV", # Ávila
+ "B", # Barcelona
+ "BA", # Badajoz
+ "BI", # Bilbao
+ "BU", # Burgos
+ "C", # La Coruña
+ "CA", # Cádiz
+ "CC", # Cáceres
+ "CS", # Castellón de la Plana
+ "CE", # Ceuta
+ "CO", # Córdoba
+ "CR", # Ciudad Real
+ "CU", # Cuenca
+ "GC", # Las Palmas (Gran Canaria)
+ "GE", # Girona (until 1992)
+ "GI", # Girona (since 1992)
+ "GR", # Granada
+ "GU", # Guadalajara
+ "H", # Huelva
+ "HU", # Huesca
+ "PM", # Palma de Mallorca (until 1997)
+ "IB", # Islas Baleares (since 1997)
+ "J", # Jaén
+ "L", # Lleida
+ "LE", # León
+ "LO", # Logroño
+ "LU", # Lugo
+ "M", # Madrid
+ "MA", # Málaga
+ "ML", # Melilla
+ "MU", # Murcia
+ "O", # Oviedo
+ "OR", # Ourense (until 1998)
+ "OU", # Ourense (since 1998)
+ "P", # Palencia
+ "NA", # Navarra
+ "PO", # Pontevedra
+ "S", # Santander
+ "SA", # Salamanca
+ "SE", # Sevilla
+ "SG", # Segovia
+ "SO", # Soria
+ "SS", # Donostia/San Sebastián
+ "T", # Tarragona
+ "TE", # Teruel
+ "TF", # Santa Cruz de Tenerife
+ "TO", # Toledo
+ "V", # Valencia
+ "VA", # Valladolid
+ "VI", # Vitoria
+ "Z", # Zaragoza
+ "ZA", # Zamora
+ )
+
+ def license_plate_unified(self) -> str:
+ """Generate a unified license plate."""
+ temp = re.sub(
+ r"\?",
+ lambda x: self.random_element(self.license_plate_new_format_suffix_letters),
+ self.license_formats[0],
+ )
+ return self.numerify(temp)
+
+ def license_plate_by_province(self, province_prefix: Optional[str] = None) -> str:
+ """Generate a provincial license plate.
+
+ If a value for ``province_prefix`` is provided, the value will be used
+ as the prefix regardless of validity. If ``None``, then a valid prefix
+ will be selected at random.
+ """
+ province_prefix = province_prefix if province_prefix is not None else self.random_element(self.province_prefix)
+ temp = re.sub(
+ r"\?",
+ lambda x: self.random_element(self.license_plate_old_format_suffix_letters),
+ "#### ??",
+ )
+ return province_prefix + " " + self.numerify(temp)
+
+ def license_plate(self) -> str:
+ """Generate a license plate.
+
+ This method randomly chooses (50/50) between |license_plate_unified|
+ or |license_plate_by_province| to generate the result.
+ """
+ if self.generator.random.randint(0, 1):
+ return self.license_plate_unified()
+ return self.license_plate_by_province()
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/es_ES/__pycache__/__init__.cpython-311.pyc b/venv/lib/python3.11/site-packages/faker/providers/automotive/es_ES/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000..dd942bc
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/es_ES/__pycache__/__init__.cpython-311.pyc
Binary files differ
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/et_EE/__init__.py b/venv/lib/python3.11/site-packages/faker/providers/automotive/et_EE/__init__.py
new file mode 100644
index 0000000..dab5516
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/et_EE/__init__.py
@@ -0,0 +1,12 @@
+from .. import Provider as AutomotiveProvider
+
+
+class Provider(AutomotiveProvider):
+ """Implement automotive provider for ``et_EE`` locale.
+
+ Source:
+
+ - https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Estonia
+ """
+
+ license_formats = ("### ???",)
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/et_EE/__pycache__/__init__.cpython-311.pyc b/venv/lib/python3.11/site-packages/faker/providers/automotive/et_EE/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000..624b85f
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/et_EE/__pycache__/__init__.cpython-311.pyc
Binary files differ
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/fi_FI/__init__.py b/venv/lib/python3.11/site-packages/faker/providers/automotive/fi_FI/__init__.py
new file mode 100644
index 0000000..aa9420b
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/fi_FI/__init__.py
@@ -0,0 +1,12 @@
+from .. import Provider as AutomotiveProvider
+
+
+class Provider(AutomotiveProvider):
+ """Implement automotive provider for ``fi_FI`` locale.
+
+ Source:
+
+ - https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Finland
+ """
+
+ license_formats = ("???-###",)
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/fi_FI/__pycache__/__init__.cpython-311.pyc b/venv/lib/python3.11/site-packages/faker/providers/automotive/fi_FI/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000..84935be
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/fi_FI/__pycache__/__init__.cpython-311.pyc
Binary files differ
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/fil_PH/__init__.py b/venv/lib/python3.11/site-packages/faker/providers/automotive/fil_PH/__init__.py
new file mode 100644
index 0000000..5858896
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/fil_PH/__init__.py
@@ -0,0 +1,10 @@
+from ..en_PH import Provider as EnPhAutomotiveProvider
+
+
+class Provider(EnPhAutomotiveProvider):
+ """Implement automotive provider for ``fil_PH`` locale.
+
+ There is no difference from the ``en_PH`` implementation.
+ """
+
+ pass
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/fil_PH/__pycache__/__init__.cpython-311.pyc b/venv/lib/python3.11/site-packages/faker/providers/automotive/fil_PH/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000..ba8b545
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/fil_PH/__pycache__/__init__.cpython-311.pyc
Binary files differ
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/fr_FR/__init__.py b/venv/lib/python3.11/site-packages/faker/providers/automotive/fr_FR/__init__.py
new file mode 100644
index 0000000..0118c14
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/fr_FR/__init__.py
@@ -0,0 +1,17 @@
+from .. import Provider as AutomotiveProvider
+
+
+class Provider(AutomotiveProvider):
+ """Implement automotive provider for ``fr_FR`` locale.
+
+ Sources:
+
+ - https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_France
+ """
+
+ license_formats = (
+ # New format
+ "??-###-??",
+ # Old format for plates < 2009
+ "###-???-##",
+ )
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/fr_FR/__pycache__/__init__.cpython-311.pyc b/venv/lib/python3.11/site-packages/faker/providers/automotive/fr_FR/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000..8edf83c
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/fr_FR/__pycache__/__init__.cpython-311.pyc
Binary files differ
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/he_IL/__init__.py b/venv/lib/python3.11/site-packages/faker/providers/automotive/he_IL/__init__.py
new file mode 100644
index 0000000..0609f62
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/he_IL/__init__.py
@@ -0,0 +1,11 @@
+from .. import Provider as AutomotiveProvider
+
+
+class Provider(AutomotiveProvider):
+ """Implement automotive provider for ``he_IL`` locale."""
+
+ """ Source : https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Israel """
+ license_formats = (
+ "###-##-###",
+ "##-###-##",
+ )
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/he_IL/__pycache__/__init__.cpython-311.pyc b/venv/lib/python3.11/site-packages/faker/providers/automotive/he_IL/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000..b95364d
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/he_IL/__pycache__/__init__.cpython-311.pyc
Binary files differ
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/hu_HU/__init__.py b/venv/lib/python3.11/site-packages/faker/providers/automotive/hu_HU/__init__.py
new file mode 100644
index 0000000..a046723
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/hu_HU/__init__.py
@@ -0,0 +1,12 @@
+from .. import Provider as AutomotiveProvider
+
+
+class Provider(AutomotiveProvider):
+ """Implement automotive provider for ``hu_HU`` locale.
+
+ Sources:
+
+ - https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Hungary
+ """
+
+ license_formats = ("???-###",)
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/hu_HU/__pycache__/__init__.cpython-311.pyc b/venv/lib/python3.11/site-packages/faker/providers/automotive/hu_HU/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000..8640175
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/hu_HU/__pycache__/__init__.cpython-311.pyc
Binary files differ
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/id_ID/__init__.py b/venv/lib/python3.11/site-packages/faker/providers/automotive/id_ID/__init__.py
new file mode 100644
index 0000000..6f7d50f
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/id_ID/__init__.py
@@ -0,0 +1,16 @@
+from .. import Provider as AutomotiveProvider
+
+
+class Provider(AutomotiveProvider):
+ """Implement automotive provider for ``id_ID`` locale."""
+
+ license_formats = (
+ "? ### ??",
+ "? ### ???",
+ "?? ### ??",
+ "?? ### ???",
+ "? #### ??",
+ "? #### ???",
+ "?? #### ??",
+ "?? #### ???",
+ )
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/id_ID/__pycache__/__init__.cpython-311.pyc b/venv/lib/python3.11/site-packages/faker/providers/automotive/id_ID/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000..c88551f
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/id_ID/__pycache__/__init__.cpython-311.pyc
Binary files differ
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/it_IT/__init__.py b/venv/lib/python3.11/site-packages/faker/providers/automotive/it_IT/__init__.py
new file mode 100644
index 0000000..c154534
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/it_IT/__init__.py
@@ -0,0 +1,15 @@
+from .. import Provider as AutomotiveProvider
+
+
+class Provider(AutomotiveProvider):
+ """Implement automotive provider for ``it_IT`` locale.
+
+ Sources:
+
+ - https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Italy
+ """
+
+ license_formats = (
+ # 1994-present
+ "??###??",
+ )
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/it_IT/__pycache__/__init__.cpython-311.pyc b/venv/lib/python3.11/site-packages/faker/providers/automotive/it_IT/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000..78ad339
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/it_IT/__pycache__/__init__.cpython-311.pyc
Binary files differ
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/lt_LT/__init__.py b/venv/lib/python3.11/site-packages/faker/providers/automotive/lt_LT/__init__.py
new file mode 100644
index 0000000..6e10f8d
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/lt_LT/__init__.py
@@ -0,0 +1,12 @@
+from .. import Provider as AutomotiveProvider
+
+
+class Provider(AutomotiveProvider):
+ """Implement automotive provider for ``lt_LT`` locale.
+
+ Source:
+
+ - https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Lithuania
+ """
+
+ license_formats = ("??? ###",)
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/lt_LT/__pycache__/__init__.cpython-311.pyc b/venv/lib/python3.11/site-packages/faker/providers/automotive/lt_LT/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000..d4c5233
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/lt_LT/__pycache__/__init__.cpython-311.pyc
Binary files differ
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/nl_BE/__init__.py b/venv/lib/python3.11/site-packages/faker/providers/automotive/nl_BE/__init__.py
new file mode 100644
index 0000000..19f24ca
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/nl_BE/__init__.py
@@ -0,0 +1,16 @@
+from .. import Provider as AutomotiveProvider
+
+
+class Provider(AutomotiveProvider):
+ """Implement automotive provider for `nl_BE` locale.
+
+ https://nl.wikipedia.org/wiki/Belgisch_kenteken
+ """
+
+ license_formats = (
+ "???-###", # 1973-2008
+ "###-???", # 2008-2010
+ # New formats after 2010
+ "1-???-###",
+ "2-???-###",
+ )
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/nl_BE/__pycache__/__init__.cpython-311.pyc b/venv/lib/python3.11/site-packages/faker/providers/automotive/nl_BE/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000..06e43b5
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/nl_BE/__pycache__/__init__.cpython-311.pyc
Binary files differ
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/nl_NL/__init__.py b/venv/lib/python3.11/site-packages/faker/providers/automotive/nl_NL/__init__.py
new file mode 100644
index 0000000..0dbab37
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/nl_NL/__init__.py
@@ -0,0 +1,77 @@
+import re
+import string
+
+from .. import Provider as AutomotiveProvider
+
+
+class Provider(AutomotiveProvider):
+ """Implement automotive provider for `nl_NL` locale.
+
+ Sources:
+ - https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_the_Netherlands
+ - https://www.cbs.nl/en-gb/figures/detail/82044eng
+
+ .. |license_plate_car| replace::
+ :meth:`license_plate_car() <faker.providers.automotive.nl_NL.Provider.license_plate_car>`
+
+ .. |license_plate_motorbike| replace::
+ :meth:`license_plate_motorbike() <faker.providers.automotive.nl_NL.Provider.license_plate_motorbike>`
+ """
+
+ # License formats for cars / other vehicles than motorbikes
+ license_formats = (
+ # Format 6
+ "##-%?-??",
+ # Format 7
+ "##-%??-#",
+ # Format 8
+ "#-@??-##",
+ # Format 9
+ "%?-###-?",
+ # Format 10
+ "%-###-??",
+ )
+
+ # License formats for motorbikes.
+ # According to CBS, approximately 10% of road vehicles in the Netherlands are motorbikes
+ license_formats_motorbike = (
+ "M?-??-##",
+ "##-M?-??",
+ )
+
+ # Base first letters of format
+ license_plate_prefix_letters = "BDFGHJKLNPRSTVXZ"
+
+ # For Format 8 (9-XXX-99) "BDFGHJLNPR" are not used,
+ # as to not clash with former export license plates
+ license_plate_prefix_letters_format_8 = "KSTVXZ"
+
+ def license_plate_motorbike(self) -> str:
+ """Generate a license plate for motorbikes."""
+ return self.bothify(
+ self.random_element(self.license_formats_motorbike),
+ letters=string.ascii_uppercase,
+ )
+
+ def license_plate_car(self) -> str:
+ """Generate a license plate for cars."""
+ # Replace % with license_plate_prefix_letters
+ temp = re.sub(
+ r"\%",
+ self.random_element(self.license_plate_prefix_letters),
+ self.random_element(self.license_formats),
+ )
+
+ # Replace @ with license_plate_prefix_letters_format_8
+ temp = re.sub(r"\@", self.random_element(self.license_plate_prefix_letters_format_8), temp)
+
+ return self.bothify(temp, letters=string.ascii_uppercase)
+
+ def license_plate(self) -> str:
+ """Generate a license plate.
+ This method randomly chooses 10% between |license_plate_motorbike|
+ or 90% |license_plate_car| to generate the result.
+ """
+ if self.generator.random.random() < 0.1:
+ return self.license_plate_motorbike()
+ return self.license_plate_car()
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/nl_NL/__pycache__/__init__.cpython-311.pyc b/venv/lib/python3.11/site-packages/faker/providers/automotive/nl_NL/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000..12b3fa8
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/nl_NL/__pycache__/__init__.cpython-311.pyc
Binary files differ
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/no_NO/__init__.py b/venv/lib/python3.11/site-packages/faker/providers/automotive/no_NO/__init__.py
new file mode 100644
index 0000000..e268814
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/no_NO/__init__.py
@@ -0,0 +1,15 @@
+from .. import Provider as AutomotiveProvider
+
+
+class Provider(AutomotiveProvider):
+ """Implement automotive provider for ``hu_HU`` locale.
+
+ Sources:
+
+ - https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Norway
+ """
+
+ license_formats = (
+ # Classic format
+ "?? #####",
+ )
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/no_NO/__pycache__/__init__.cpython-311.pyc b/venv/lib/python3.11/site-packages/faker/providers/automotive/no_NO/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000..d978fad
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/no_NO/__pycache__/__init__.cpython-311.pyc
Binary files differ
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/pl_PL/__init__.py b/venv/lib/python3.11/site-packages/faker/providers/automotive/pl_PL/__init__.py
new file mode 100644
index 0000000..0ecd733
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/pl_PL/__init__.py
@@ -0,0 +1,39 @@
+from typing import List
+
+from .. import Provider as AutomotiveProvider
+
+
+class Provider(AutomotiveProvider):
+ """Implement automotive provider for ``pl_PL`` locale.
+
+ Sources:
+
+ - https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Poland
+ """
+
+ license_formats = (
+ "?? #####",
+ "?? ####?",
+ "?? ###??",
+ "?? #?###",
+ "?? #??##",
+ "??? ?###",
+ "??? ##??",
+ "??? #?##",
+ "??? ##?#",
+ "??? #??#",
+ "??? ??##",
+ "??? #####",
+ "??? ####?",
+ "??? ###??",
+ )
+
+ def license_plate_regex_formats(self) -> List[str]:
+ """Return a regex for matching license plates.
+
+ .. warning::
+ This is technically not a method that generates fake data, and it
+ should not be part of the public API. User should refrain from using
+ this method.
+ """
+ return [plate.replace("?", "[A-Z]").replace("#", "[0-9]") for plate in self.license_formats]
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/pl_PL/__pycache__/__init__.cpython-311.pyc b/venv/lib/python3.11/site-packages/faker/providers/automotive/pl_PL/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000..24a36ad
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/pl_PL/__pycache__/__init__.cpython-311.pyc
Binary files differ
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/pt_BR/__init__.py b/venv/lib/python3.11/site-packages/faker/providers/automotive/pt_BR/__init__.py
new file mode 100644
index 0000000..c844620
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/pt_BR/__init__.py
@@ -0,0 +1,7 @@
+from .. import Provider as AutomotiveProvider
+
+
+class Provider(AutomotiveProvider):
+ """Implement automotive provider for ``pt_BR`` locale."""
+
+ license_formats = ("???-#?##",)
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/pt_BR/__pycache__/__init__.cpython-311.pyc b/venv/lib/python3.11/site-packages/faker/providers/automotive/pt_BR/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000..43e13b9
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/pt_BR/__pycache__/__init__.cpython-311.pyc
Binary files differ
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/pt_PT/__init__.py b/venv/lib/python3.11/site-packages/faker/providers/automotive/pt_PT/__init__.py
new file mode 100644
index 0000000..cd8fee4
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/pt_PT/__init__.py
@@ -0,0 +1,18 @@
+from .. import Provider as AutomotiveProvider
+
+
+class Provider(AutomotiveProvider):
+ """Implement automotive provider for ``pt_PT`` locale.
+
+ Sources:
+
+ - https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Portugal
+ """
+
+ license_formats = (
+ "##-##-??",
+ "##-??-##",
+ "??-##-##",
+ # New format since March 2020
+ "??-##-??",
+ )
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/pt_PT/__pycache__/__init__.cpython-311.pyc b/venv/lib/python3.11/site-packages/faker/providers/automotive/pt_PT/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000..3b89f55
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/pt_PT/__pycache__/__init__.cpython-311.pyc
Binary files differ
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/ro_RO/__init__.py b/venv/lib/python3.11/site-packages/faker/providers/automotive/ro_RO/__init__.py
new file mode 100644
index 0000000..f5e4c44
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/ro_RO/__init__.py
@@ -0,0 +1,66 @@
+import string
+
+from .. import Provider as AutomotiveProvider
+
+
+class Provider(AutomotiveProvider):
+ """Implement automotive provider for ``ro_RO`` locale."""
+
+ license_plate_prefix = (
+ "AB",
+ "AG",
+ "AR",
+ "B",
+ "BC",
+ "BH",
+ "BN",
+ "BR",
+ "BT",
+ "BV",
+ "BZ",
+ "CJ",
+ "CL",
+ "CS",
+ "CT",
+ "CV",
+ "DB",
+ "DJ",
+ "GJ",
+ "GL",
+ "GR",
+ "HD",
+ "HR",
+ "IF",
+ "IL",
+ "IS",
+ "MH",
+ "MM",
+ "MS",
+ "NT",
+ "OT",
+ "PH",
+ "SB",
+ "SJ",
+ "SM",
+ "SV",
+ "TL",
+ "TM",
+ "TR",
+ "VL",
+ "VN",
+ "VS",
+ )
+
+ license_plate_suffix = (
+ "-###-???",
+ "-##-???",
+ )
+
+ def license_plate(self) -> str:
+ """Generate a license plate."""
+ prefix: str = self.random_element(self.license_plate_prefix)
+ suffix = self.bothify(
+ self.random_element(self.license_plate_suffix),
+ letters=string.ascii_uppercase,
+ )
+ return prefix + suffix
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/ro_RO/__pycache__/__init__.cpython-311.pyc b/venv/lib/python3.11/site-packages/faker/providers/automotive/ro_RO/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000..da56a12
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/ro_RO/__pycache__/__init__.cpython-311.pyc
Binary files differ
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/ru_RU/__init__.py b/venv/lib/python3.11/site-packages/faker/providers/automotive/ru_RU/__init__.py
new file mode 100644
index 0000000..cce4ba0
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/ru_RU/__init__.py
@@ -0,0 +1,321 @@
+from .. import Provider as AutomotiveProvider
+
+
+class Provider(AutomotiveProvider):
+ """Implement automotive provider for ``ru_RU`` locale.
+
+ Sources:
+
+ - https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Russia
+ - https://ru.wikipedia.org/wiki/Категории_транспортных_средств
+ """
+
+ license_plate_letters = ("A", "B", "E", "K", "M", "Н", "О", "Р", "С", "Т", "У", "Х")
+
+ vehicle_categories = (
+ "M",
+ "A",
+ "A1",
+ "B",
+ "B1",
+ "BE",
+ "C",
+ "C1",
+ "C1E",
+ "CE",
+ "D",
+ "D1",
+ "DE",
+ "Tm",
+ "Tb",
+ )
+
+ license_plate_suffix = (
+ # Republic of Adygea
+ "01",
+ # Republic of Bashkortostan
+ "02",
+ "102",
+ # Republic of Buryatia
+ "03",
+ # Altai Republic
+ "04",
+ # Republic of Dagestan
+ "05",
+ # Republic of Ingushetia
+ "06",
+ # Kabardino-Balkar Republic
+ "07",
+ # Republic of Kalmykia
+ "08",
+ # Karachay-Cherkess Republic
+ "09",
+ # Republic of Karelia
+ "10",
+ # Komi Republic
+ "11",
+ # Mari El Republic
+ "12",
+ # Republic of Mordovia
+ "13",
+ "113",
+ # Sakha Republic
+ "14",
+ # Republic of North Ossetia–Alania
+ "15",
+ # Republic of Tatarstan
+ "16",
+ "116",
+ "716",
+ # Tuva Republic
+ "17",
+ # Udmurt Republic
+ "18",
+ # Republic of Khakassia
+ "19",
+ # Chechen Republic
+ "20",
+ "95",
+ # Chuvash Republic
+ "21",
+ "121",
+ # Altai Krai
+ "22",
+ # Krasnodar Krai
+ "23",
+ "93",
+ "123",
+ # Krasnoyarsk Krai
+ "24",
+ "84",
+ "88",
+ "124",
+ # Primorsky Krai
+ "25",
+ "125",
+ # Stavropol Krai
+ "26",
+ "126",
+ # Khabarovsk Krai
+ "27",
+ # Amur Oblast
+ "28",
+ # Arkhangelsk Oblast
+ "29",
+ # Astrakhan Oblast
+ "30",
+ # Belgorod Oblast
+ "31",
+ # Bryansk Oblast
+ "32",
+ # Vladimir Oblast
+ "33",
+ # Volgograd Oblast
+ "34",
+ "134",
+ # Vologda Oblast
+ "35",
+ # Voronezh Oblast
+ "36",
+ "136",
+ # Ivanovo Oblast
+ "37",
+ # Irkutsk Oblast
+ "38",
+ "85",
+ "38",
+ # Kaliningrad Oblast
+ "39",
+ "91",
+ # Kaluga Oblast
+ "40",
+ # Kamchatka Krai
+ "41",
+ "82",
+ # Kemerovo Oblast
+ "42",
+ "142",
+ # Kirov Oblast
+ "43",
+ # Kostroma Oblast
+ "44",
+ # Kurgan Oblast
+ "45",
+ # Kursk Oblast
+ "46",
+ # Leningrad Oblast
+ "47",
+ # Lipetsk Oblast
+ "48",
+ # Magadan Oblast
+ "49",
+ # Moscow Oblast
+ "50",
+ "90",
+ "150",
+ "190",
+ "750",
+ # Murmansk Oblast
+ "51",
+ # Nizhny Novgorod Oblast
+ "52",
+ "152",
+ # Novgorod Oblast
+ "53",
+ # Novosibirsk Oblast
+ "54",
+ "154",
+ # Omsk Oblast
+ "55",
+ # Orenburg Oblast
+ "56",
+ # Oryol Oblast
+ "57",
+ # Penza Oblast
+ "58",
+ # Perm Krai
+ "59",
+ "81",
+ "159",
+ # Pskov Oblast
+ "60",
+ # Rostov Oblast
+ "61",
+ "161",
+ # Ryazan Oblast
+ "62",
+ # Samara Oblast
+ "63",
+ "163",
+ "763",
+ # Saratov Oblast
+ "64",
+ "164",
+ # Sakhalin Oblast
+ "65",
+ # Sverdlovsk Oblast
+ "66",
+ "96",
+ "196",
+ # Smolensk Oblast
+ "67",
+ # Tambov Oblast
+ "68",
+ # Tver Oblast
+ "69",
+ # Tomsk Oblast
+ "70",
+ # Tula Oblast
+ "71",
+ # Tyumen Oblast
+ "72",
+ # Ulyanovsk Oblast
+ "73",
+ "173",
+ # Chelyabinsk Oblast
+ "74",
+ "174",
+ # Zabaykalsky Krai
+ "75",
+ "80",
+ # Yaroslavl Oblast
+ "76",
+ # Moscow
+ "77",
+ "97",
+ "99",
+ "177",
+ "197",
+ "199",
+ "777",
+ "799",
+ # St. Petersburg
+ "78",
+ "98",
+ "178",
+ "198",
+ # Jewish Autonomous Oblast
+ "79",
+ # Agin-Buryat Okrug / "Former Buryat Autonomous District of Aginskoye"
+ "80",
+ # Komi-Permyak Okrug / "Former Komi-Permyak Autonomous District"
+ "81",
+ # Republic of Crimea / De jure part of Ukraine as Autonomous Republic. Annexed by Russia in 2014.
+ "82",
+ # Koryak Okrug / "Former Koryak Autonomous District"
+ "82",
+ # Nenets Autonomous Okrug (Nenetsia)
+ "83",
+ # Taymyr Autonomous Okrug / "Former Taymyr (Dolgan-Nenets) Autonomous District"
+ "84",
+ # Ust-Orda Buryat Okrug / "Former Buryat Autonomous District of Ust-Ordynskoy"
+ "85",
+ # Khanty-Mansi Autonomous Okrug
+ "86",
+ "186",
+ # Chukotka Autonomous Okrug
+ "87",
+ # Evenk Autonomous Okrug / "Former Evenk Autonomous District"
+ "88",
+ # Yamalo-Nenets Autonomous Okrug
+ "89",
+ # Sevastopol / De jure part of Ukraine as City with special status. Annexed by Russia in 2014.
+ "92",
+ # Territories outside of the Russian Federation,
+ # served by the bodies of internal affairs of the Russian Federation, such as Baikonur
+ "94",
+ )
+
+ license_plate_formats = (
+ # Private vehicle plate
+ "{{plate_letter}}{{plate_number}}{{plate_letter}}{{plate_letter}} {{plate_suffix}}",
+ # Public transport plate
+ "{{plate_letter}}{{plate_letter}}{{plate_number}} {{plate_suffix}}",
+ # Trailer plate
+ "{{plate_letter}}{{plate_letter}}{{plate_number_extra}} {{plate_suffix}}",
+ # Police forces vehicle plate
+ "{{plate_letter}}{{plate_number_extra}} {{plate_suffix}}",
+ # Military vehicle plate
+ "{{plate_number_extra}}{{plate_letter}}{{plate_letter}} {{plate_suffix}}",
+ # Diplomatic vehicles
+ "{{plate_number_special}} {{plate_suffix}}",
+ )
+
+ plate_number_formats = ("###",)
+
+ plate_extra_formats = ("####",)
+
+ plate_special_formats = (
+ "00#CD#",
+ "00#D###",
+ "00#T###",
+ )
+
+ def license_plate(self) -> str:
+ """Generate a license plate."""
+ pattern: str = self.random_element(self.license_plate_formats)
+ return self.generator.parse(pattern)
+
+ def plate_letter(self) -> str:
+ """Generate a letter for license plates."""
+ return self.random_element(self.license_plate_letters)
+
+ def plate_number(self) -> str:
+ """Generate a number for license plates."""
+ return self.numerify(self.random_element(self.plate_number_formats))
+
+ def plate_number_extra(self) -> str:
+ """Generate extra numerical code for license plates."""
+ return self.numerify(self.random_element(self.plate_extra_formats))
+
+ def plate_number_special(self) -> str:
+ """Generate a special code for license plates."""
+ return self.numerify(self.random_element(self.plate_special_formats))
+
+ def plate_suffix(self) -> str:
+ """Generate a suffix code for license plates."""
+ return self.random_element(self.license_plate_suffix)
+
+ def vehicle_category(self) -> str:
+ """Generate a vehicle category code for license plates."""
+ return self.random_element(self.vehicle_categories)
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/ru_RU/__pycache__/__init__.cpython-311.pyc b/venv/lib/python3.11/site-packages/faker/providers/automotive/ru_RU/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000..d8ef63d
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/ru_RU/__pycache__/__init__.cpython-311.pyc
Binary files differ
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/sk_SK/__init__.py b/venv/lib/python3.11/site-packages/faker/providers/automotive/sk_SK/__init__.py
new file mode 100644
index 0000000..b92bb17
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/sk_SK/__init__.py
@@ -0,0 +1,100 @@
+import string
+
+from .. import Provider as AutomotiveProvider
+
+
+class Provider(AutomotiveProvider):
+ """Implement automotive provider for ``sk_SK`` locale.
+
+ Sources:
+
+ - https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Slovakia
+ """
+
+ license_plate_prefix = [
+ "BA",
+ "BL",
+ "BT", # Bratislava
+ "BB", # Banska Bystrica
+ "BJ", # Bardejov
+ "BN", # Banovce nad Bebravou
+ "BR", # Brezno
+ "BS", # Banska Stiavnica
+ "BY", # Bytca
+ "CA", # Cadca
+ "DK", # Dolny Kubin
+ "DS", # Dunajska Streda
+ "DT", # Detva
+ "GA", # Galanta
+ "GL", # Gelnica
+ "HC", # Hlohovec
+ "HE", # Humenne
+ "IL", # Ilava
+ "KA", # Krupina
+ "KE", # Kosice
+ "KK", # Kezmarok
+ "KM", # Kysucke Nove Mesto
+ "KN", # Komarno
+ "KS", # Kosice-okolie
+ "LC", # Lucenec
+ "LE", # Levoca
+ "LM", # Liptovsky Mikulas
+ "LV", # Levice
+ "MA", # Malacky
+ "MI", # Michalovce
+ "ML", # Medzilaborce
+ "MT", # Martin
+ "MY", # Myjava
+ "NR", # Nitra
+ "NM", # Nove Mesto nad Vahom
+ "NO", # Namestovo
+ "NZ", # Nove Zamky
+ "PB", # Povazska Bystrica
+ "PD", # Prievidza
+ "PE", # Partizanske
+ "PK", # Pezinok
+ "PN", # Piestany
+ "PO", # Presov
+ "PP", # Poprad
+ "PT", # Poltar
+ "PU", # Puchov
+ "RA", # Revuca
+ "RK", # Ruzomberok
+ "RS", # Rimavska Sobota
+ "RV", # Roznava
+ "SA", # Sala
+ "SB", # Sabinov
+ "SC", # Senec
+ "SE", # Senica
+ "SI", # Skalica
+ "SK", # Svidnik
+ "SL", # Stara Lubovna
+ "SN", # Spisska Nova Ves
+ "SO", # Sobrance
+ "SP", # Stropkov
+ "SV", # Snina
+ "TT", # Trnava
+ "TN", # Trencin
+ "TO", # Topolcany
+ "TR", # Turcianske Teplice
+ "TS", # Tvrdosin
+ "TV", # Trebisov
+ "VK", # Velky Krtis
+ "VT", # Vranov nad Toplou
+ "ZA", # Zilina
+ "ZC", # Zarnovica
+ "ZH", # Ziar nad Hronom
+ "ZM", # Zlate Moravce
+ "ZV", # Zvolen
+ ]
+
+ license_plate_suffix = ("###??",)
+
+ def license_plate(self) -> str:
+ """Generate a license plate."""
+ prefix: str = self.random_element(self.license_plate_prefix)
+ suffix = self.bothify(
+ self.random_element(self.license_plate_suffix),
+ letters=string.ascii_uppercase,
+ )
+ return prefix + suffix
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/sk_SK/__pycache__/__init__.cpython-311.pyc b/venv/lib/python3.11/site-packages/faker/providers/automotive/sk_SK/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000..e497315
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/sk_SK/__pycache__/__init__.cpython-311.pyc
Binary files differ
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/sq_AL/__init__.py b/venv/lib/python3.11/site-packages/faker/providers/automotive/sq_AL/__init__.py
new file mode 100644
index 0000000..d2c506f
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/sq_AL/__init__.py
@@ -0,0 +1,12 @@
+from .. import Provider as AutomotiveProvider
+
+
+class Provider(AutomotiveProvider):
+ """Implement automotive provider for ``sq_AL`` locale.
+
+ Source:
+
+ - https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Albania
+ """
+
+ license_formats = ("?? ###??",)
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/sq_AL/__pycache__/__init__.cpython-311.pyc b/venv/lib/python3.11/site-packages/faker/providers/automotive/sq_AL/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000..2f0484f
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/sq_AL/__pycache__/__init__.cpython-311.pyc
Binary files differ
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/sv_SE/__init__.py b/venv/lib/python3.11/site-packages/faker/providers/automotive/sv_SE/__init__.py
new file mode 100644
index 0000000..f875d2b
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/sv_SE/__init__.py
@@ -0,0 +1,18 @@
+from .. import Provider as AutomotiveProvider
+
+
+class Provider(AutomotiveProvider):
+ """Implement automotive provider for ``sv_SE`` locale.
+
+ Sources:
+
+ - https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Sweden
+ - https://www.transportstyrelsen.se/en/road/Vehicles/license-plates/
+ """
+
+ license_formats = (
+ # Classic format
+ "??? ###",
+ # New format
+ "??? ##?",
+ )
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/sv_SE/__pycache__/__init__.cpython-311.pyc b/venv/lib/python3.11/site-packages/faker/providers/automotive/sv_SE/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000..d0c9a00
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/sv_SE/__pycache__/__init__.cpython-311.pyc
Binary files differ
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/th_TH/__init__.py b/venv/lib/python3.11/site-packages/faker/providers/automotive/th_TH/__init__.py
new file mode 100644
index 0000000..078c210
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/th_TH/__init__.py
@@ -0,0 +1,39 @@
+import re
+
+from .. import Provider as AutomotiveProvider
+
+
+class Provider(AutomotiveProvider):
+ """Implement automotive provider for ``th_TH`` locale.
+
+ Sources:
+
+ - https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Thailand
+ """
+
+ license_formats = (
+ "# ?? ####",
+ "# ?? ###",
+ "# ?? ##",
+ "# ?? #",
+ "?? ####",
+ "?? ###",
+ "?? ##",
+ "?? #",
+ "??? ###",
+ "??? ##",
+ "??? #",
+ "##-####",
+ )
+
+ thai_consonants = "กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรลวศษสหฬอฮ"
+
+ def license_plate(self) -> str:
+ """Generate a license plate."""
+
+ temp = re.sub(
+ r"\?",
+ lambda x: self.random_element(self.thai_consonants),
+ self.random_element(self.license_formats),
+ )
+ return self.numerify(temp)
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/th_TH/__pycache__/__init__.cpython-311.pyc b/venv/lib/python3.11/site-packages/faker/providers/automotive/th_TH/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000..5e51064
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/th_TH/__pycache__/__init__.cpython-311.pyc
Binary files differ
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/tl_PH/__init__.py b/venv/lib/python3.11/site-packages/faker/providers/automotive/tl_PH/__init__.py
new file mode 100644
index 0000000..4d3cf6e
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/tl_PH/__init__.py
@@ -0,0 +1,10 @@
+from ..en_PH import Provider as EnPhAutomotiveProvider
+
+
+class Provider(EnPhAutomotiveProvider):
+ """Implement automotive provider for ``tl_PH`` locale.
+
+ There is no difference from the ``en_PH`` implementation.
+ """
+
+ pass
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/tl_PH/__pycache__/__init__.cpython-311.pyc b/venv/lib/python3.11/site-packages/faker/providers/automotive/tl_PH/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000..77c7a03
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/tl_PH/__pycache__/__init__.cpython-311.pyc
Binary files differ
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/tr_TR/__init__.py b/venv/lib/python3.11/site-packages/faker/providers/automotive/tr_TR/__init__.py
new file mode 100644
index 0000000..7b977a2
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/tr_TR/__init__.py
@@ -0,0 +1,33 @@
+import re
+
+from .. import Provider as AutomotiveProvider
+
+
+class Provider(AutomotiveProvider):
+ """Implement automotive provider for ``tr_TR`` locale.
+
+ Sources:
+
+ - https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Turkey
+ """
+
+ license_formats = (
+ "## ? ####",
+ "## ? #####",
+ "## ?? ###",
+ "## ?? ####",
+ "## ??? ##",
+ "## ??? ###",
+ )
+ ascii_uppercase_turkish = "ABCDEFGHIJKLMNOPRSTUVYZ"
+
+ def license_plate(self) -> str:
+ """Generate a license plate."""
+ temp = re.sub(
+ r"\?",
+ lambda x: self.random_element(self.ascii_uppercase_turkish),
+ self.random_element(self.license_formats),
+ )
+ temp = temp.replace("##", "{:02d}", 1)
+ temp = temp.format(self.random_element(range(1, 82)))
+ return self.numerify(temp)
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/tr_TR/__pycache__/__init__.cpython-311.pyc b/venv/lib/python3.11/site-packages/faker/providers/automotive/tr_TR/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000..470fc55
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/tr_TR/__pycache__/__init__.cpython-311.pyc
Binary files differ
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/uk_UA/__init__.py b/venv/lib/python3.11/site-packages/faker/providers/automotive/uk_UA/__init__.py
new file mode 100644
index 0000000..2e933f3
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/uk_UA/__init__.py
@@ -0,0 +1,291 @@
+import random
+
+from typing import Optional, Tuple
+
+from .. import Provider as AutomotiveProvider
+
+
+class Provider(AutomotiveProvider):
+ plate_number_formats = ("####",)
+
+ license_region_data = {
+ "Crimea": (("AK", "KK", "TK", "MK"), "01"),
+ "Kyiv": (("AA", "KA", "TT", "TA"), "11"),
+ "Vinnytsia": (("AB", "KB", "MM", "OK"), "02"),
+ "Volyn": (("AC", "KC", "SM", "TS"), "03"),
+ "Dnipro": (("AE", "KE", "RR", "MI"), "04"),
+ "Donetsk": (("AN", "KH", "TM", "MH"), "05"),
+ "Kyiv_reg": (("AI", "KI", "TI", "ME"), "10"),
+ "Zhytomyr": (("AM", "KM", "TM", "MV"), "06"),
+ "Zakarpattia": (("AO", "KO", "MT", "MO"), "07"),
+ "Zaporizhia": (("AR", "KR", "TR", "MR"), "08"),
+ "IvanoFrankivsk": (("AT", "KT", "TO", "XS"), "09"),
+ "Kirovohrad": (("BA", "NA", "XA", "EA"), "12"),
+ "Luhansk": (("BB", "NV", "EE", "EV"), "13"),
+ "Lviv": (("BS", "NS", "SS", "ES"), "14"),
+ "Mykolaiv": (("BE", "NE", "XE", "XN"), "15"),
+ "Odessa": (("BN", "NN", "OO", "EN"), "16"),
+ "Poltava": (("BI", "NI", "XI", "EI"), "17"),
+ "Rivne": (("BK", "NK", "XK", "EK"), "18"),
+ "Sumy": (("BM", "NM", "XM", "EM"), "19"),
+ "Ternopil": (("BO", "NO", "XO", "EO"), "20"),
+ "Kharkiv": (("AX", "KX", "XX", "EX"), "21"),
+ "Kherson": (("BT", "NT", "XT", "ET"), "22"),
+ "Khmelnytsky": (("BX", "NX", "OX", "RX"), "23"),
+ "Cherkasy": (("SA", "IA", "OA", "RA"), "24"),
+ "Chernihiv": (("SV", "IV", "OV", "RV"), "25"),
+ "Chernivtsi": (("SE", "IE", "OE", "RE"), "26"),
+ "Sevastopol": (("SN", "IN", "ON", "RN"), "27"),
+ "Nationwide": (("II", "ED", "DC", "DI", "PD"), "00"),
+ }
+
+ license_plate_suffix = (
+ "AA",
+ "BA",
+ "CA",
+ "EA",
+ "HA",
+ "IA",
+ "KA",
+ "MA",
+ "OA",
+ "PA",
+ "TA",
+ "XA",
+ "AB",
+ "BB",
+ "CB",
+ "EB",
+ "HB",
+ "IB",
+ "KB",
+ "MB",
+ "OB",
+ "PB",
+ "TB",
+ "XB",
+ "AC",
+ "BC",
+ "BR",
+ "EC",
+ "HC",
+ "IC",
+ "KC",
+ "MC",
+ "OC",
+ "PC",
+ "TC",
+ "XC",
+ "AE",
+ "BE",
+ "CE",
+ "EE",
+ "HE",
+ "IE",
+ "KE",
+ "ME",
+ "OE",
+ "PE",
+ "TE",
+ "XE",
+ "AN",
+ "BN",
+ "CN",
+ "EN",
+ "HN",
+ "IN",
+ "KN",
+ "MK",
+ "ON",
+ "PN",
+ "TN",
+ "XN",
+ "AI",
+ "BI",
+ "CI",
+ "EI",
+ "HI",
+ "II",
+ "KI",
+ "MI",
+ "OI",
+ "PI",
+ "TI",
+ "XI",
+ "AK",
+ "BK",
+ "CK",
+ "EK",
+ "HK",
+ "IK",
+ "KK",
+ "MK",
+ "OK",
+ "PK",
+ "TK",
+ "XK",
+ "AM",
+ "BM",
+ "CM",
+ "EM",
+ "HM",
+ "IM",
+ "KM",
+ "MM",
+ "OM",
+ "PM",
+ "TM",
+ "XM",
+ "AO",
+ "BO",
+ "CO",
+ "EO",
+ "HO",
+ "IO",
+ "KO",
+ "MO",
+ "OO",
+ "PO",
+ "TO",
+ "XO",
+ "AP",
+ "BP",
+ "CP",
+ "EP",
+ "HP",
+ "IP",
+ "KP",
+ "MP",
+ "OP",
+ "PP",
+ "TP",
+ "XP",
+ "AT",
+ "BT",
+ "CT",
+ "ET",
+ "HT",
+ "IT",
+ "KT",
+ "MT",
+ "OT",
+ "PT",
+ "TT",
+ "XT",
+ "AX",
+ "BX",
+ "CX",
+ "EX",
+ "HX",
+ "IX",
+ "KX",
+ "MX",
+ "OX",
+ "PX",
+ "TX",
+ "XX",
+ "AY",
+ "AZ",
+ "BH",
+ "BL",
+ "BN",
+ "BQ",
+ "BR",
+ "TU",
+ "TV",
+ "TY",
+ "TZ",
+ )
+
+ vehicle_categories = ("A1", "A", "B1", "B", "C1", "C", "D1", "D", "BE", "C1E", "CE", "D1E", "DE", "T")
+
+ def __get_random_region_code(self, region_name: Optional[str] = None) -> Tuple[str, str]:
+ try:
+ if region_name is None:
+ region_name, _ = random.choice(list(self.license_region_data.items()))
+
+ prefix, region_number = self.license_region_data[region_name]
+ return random.choice(prefix), region_number
+ except KeyError:
+ region_names = ", ".join(self.license_region_data.keys())
+ raise KeyError(f"Keys name must be only {region_names}")
+
+ def license_plate(self, region_name: Optional[str] = None, temporary_plate: bool = False) -> str:
+ """Generate a license plate.
+
+ - If ``region_name`` is ``None`` (default), its value will be set to a random.
+ - If ``region_name`` is ``Kyiv``, will use this region in build of license plates.
+ - If ``temporary_plate`` is ``False`` (default), generate license plate AA0000AA format
+ - If ``temporary_plate`` is ``True``, generate temporary plate format 01 AA0000
+ 01 - 27 it's region number
+
+ :sample:
+ :sample: region_name=None, temporary_plate=False
+ :sample: region_name=None, temporary_plate=True
+ :sample: region_name="Kyiv", temporary_plate=False
+ :sample: region_name="Kyiv", temporary_plate=True
+ """
+ region, region_number = self.__get_random_region_code(region_name)
+ if temporary_plate:
+ return f"{region_number} {region}{self.plate_number()}"
+
+ number = self.plate_number()
+ series = self.plate_letter_suffix()
+ return f"{region}{number}{series}"
+
+ def plate_region_code(self, region_name: Optional[str] = None) -> str:
+ """
+ Generate plate region number
+
+ :sample:
+ :sample: region_name="Kyiv"
+ """
+ _, region_number = self.__get_random_region_code(region_name)
+ return region_number
+
+ def plate_letter_prefix(self, region_name: Optional[str] = None) -> str:
+ """
+ Generate a letter for license plates.
+
+ :sample:
+ :sample: region_name="Kyiv"
+ """
+ letters, _ = self.__get_random_region_code(region_name)
+ return letters
+
+ def plate_letter_suffix(self) -> str:
+ """
+ Generate a end letter for license plates.
+
+ :sample:
+ """
+ return self.random_element(self.license_plate_suffix)
+
+ def plate_number(self) -> str:
+ """
+ Generate a number for license plates.
+
+ :sample:
+ """
+ return self.numerify(self.random_element(self.plate_number_formats))
+
+ def diplomatic_license_plate(self) -> str:
+ """
+ Example: 'CDP 000' or 'DP 000 000' or 'S 000 000' format
+
+ :sample:
+ """
+ level = random.choice(("CDP", "DP", "S"))
+ country_code = self.random_number(3, fix_len=True)
+ car_number = self.random_number(3, fix_len=True)
+ if level == "CDP":
+ return f"{level} {country_code}"
+ return f"{level} {country_code} {car_number}"
+
+ def vehicle_category(self) -> str:
+ """
+ Generate a vehicle category code for license plates.
+
+ :sample:
+ """
+ return self.random_element(self.vehicle_categories)
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/uk_UA/__pycache__/__init__.cpython-311.pyc b/venv/lib/python3.11/site-packages/faker/providers/automotive/uk_UA/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000..28c27e0
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/uk_UA/__pycache__/__init__.cpython-311.pyc
Binary files differ
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/vi_VN/__init__.py b/venv/lib/python3.11/site-packages/faker/providers/automotive/vi_VN/__init__.py
new file mode 100644
index 0000000..f877249
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/vi_VN/__init__.py
@@ -0,0 +1,24 @@
+import re
+
+from .. import Provider as AutomotiveProvider
+
+
+class Provider(AutomotiveProvider):
+ """Implement automotive provider for ``vi_VN`` locale.
+
+ Sources:
+
+ - https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Vietnam
+ """
+
+ license_formats = ("##?-#####",)
+ ascii_uppercase_vietnamese = "ABCDĐEFGHKLMNPSTUVXYZ"
+
+ def license_plate(self) -> str:
+ """Generate a license plate."""
+ temp = re.sub(
+ r"\?",
+ lambda x: self.random_element(self.ascii_uppercase_vietnamese),
+ self.random_element(self.license_formats),
+ )
+ return self.numerify(temp)
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/vi_VN/__pycache__/__init__.cpython-311.pyc b/venv/lib/python3.11/site-packages/faker/providers/automotive/vi_VN/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000..479c68e
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/vi_VN/__pycache__/__init__.cpython-311.pyc
Binary files differ
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/zh_CN/__init__.py b/venv/lib/python3.11/site-packages/faker/providers/automotive/zh_CN/__init__.py
new file mode 100644
index 0000000..1982959
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/zh_CN/__init__.py
@@ -0,0 +1,47 @@
+from .. import Provider as AutomotiveProvider
+
+
+class Provider(AutomotiveProvider):
+ """
+ Implement automotive provider for `zh_CN` locale.
+ electric vehicles or downtown-restricted plates are not included
+ """
+
+ province_code = (
+ "京",
+ "津",
+ "冀",
+ "晋",
+ "蒙",
+ "辽",
+ "吉",
+ "黑",
+ "沪",
+ "苏",
+ "浙",
+ "皖",
+ "闽",
+ "赣",
+ "鲁",
+ "豫",
+ "鄂",
+ "湘",
+ "粤",
+ "桂",
+ "琼",
+ "渝",
+ "川",
+ "贵",
+ "云",
+ "藏",
+ "陕",
+ "甘",
+ "青",
+ "宁",
+ "新",
+ )
+
+ def license_plate(self) -> str:
+ """Generate a license plate."""
+ pattern: str = str(self.random_element(self.province_code)) + self.random_uppercase_letter() + "-#####"
+ return self.numerify(self.generator.parse(pattern))
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/zh_CN/__pycache__/__init__.cpython-311.pyc b/venv/lib/python3.11/site-packages/faker/providers/automotive/zh_CN/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000..94498ba
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/zh_CN/__pycache__/__init__.cpython-311.pyc
Binary files differ
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/zh_TW/__init__.py b/venv/lib/python3.11/site-packages/faker/providers/automotive/zh_TW/__init__.py
new file mode 100644
index 0000000..2554267
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/zh_TW/__init__.py
@@ -0,0 +1,19 @@
+from .. import Provider as AutomotiveProvider
+
+
+class Provider(AutomotiveProvider):
+ """Implement automotive provider for ``zh_TW`` locale.
+
+ Sources:
+ - https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Taiwan
+
+ """
+
+ license_formats = (
+ "####-??",
+ "??-####",
+ # Commercial vehicles since 2012
+ "???-###",
+ # New format since 2014
+ "???-####",
+ )
diff --git a/venv/lib/python3.11/site-packages/faker/providers/automotive/zh_TW/__pycache__/__init__.cpython-311.pyc b/venv/lib/python3.11/site-packages/faker/providers/automotive/zh_TW/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000..1d6fe99
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/faker/providers/automotive/zh_TW/__pycache__/__init__.cpython-311.pyc
Binary files differ