summaryrefslogtreecommitdiff
path: root/venv/lib/python3.11/site-packages/faker/providers/automotive/ar_SA
diff options
context:
space:
mode:
Diffstat (limited to 'venv/lib/python3.11/site-packages/faker/providers/automotive/ar_SA')
-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
2 files changed, 89 insertions, 0 deletions
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