class NatDescriptor(object):
    def __init__(self):
        self.__version__ = "2022.09.06"
        self.id_type = {1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8}
        self.provinces = {
            10: {
                "province_name": "Bangkok",
                "districts": {
                    1001: "เขตพระนคร",
                    1002: "เขตดุสติ",
                    1003: "เขตหนองจอก",
                    1004: "เขตบางรัก",
                    1005: "เขตบางเขน",
                    1006: "เขตบางกะปิ",
                    1007: "เขตปทุมวัน",
                    1008: "เขตป้อมปราบศัตรูพ่าย",
                    1009: "เขตพระโขนง",
                    1010: "เขตมีนบุรี",
                    1011: "เขตลาดกระบัง",
                    1012: "เขตยานนาวา",
                    1013: "เขตสัมพันธวงศ์",
                    1014: "เขตพญาไท",
                    1015: "เขตธนบุรี",
                    1016: "เขตบางกอกใหญ่",
                    1017: "เขตหว้",
                    1018: "เขตคลองสาน",
                    1019: "เขตตลิ่งชัน",
                    1020: "เขตบางกอกนอ้",
                    1021: "เขตบางขุนเทียน",
                    1022: "เขตภาษีเจริญ",
                    1023: "เขตหนองแขม",
                    1024: "เขตราษฎร์บูรณะ",
                    1025: "เขตบางพลัด",
                    1026: "เขตดินแดง",
                    1027: "เขตบึงกุ่ม",
                    1028: "เขตสาทร",
                    1029: "เขตบางซื่อ",
                    1030: "เขตจตุจักร",
                    1031: "เขตบางคอแหลม",
                    1032: "เขตประเวศ",
                    1033: "เขตคลองเตย",
                    1034: "เขตสวนหลวง",
                    1035: "เขตจอมทอง",
                    1036: "เขตดอนเมือง",
                    1037: "เขตราชเทวี",
                    1038: "เขตลาดพรา้",
                    1039: "เขตวัฒนา",
                    1040: "เขตบางแค",
                    1041: "เขตหลักสี่",
                    1042: "เขตสายไหม",
                    1043: "เขตคันนายาว",
                    1044: "เขตสะพานสูง",
                    1045: "เขตวังทองหลาง",
                    1046: "เขตคลองสามวา",
                    1047: "เขตบางนา",
                    1048: "เขตทวีวัฒนา",
                    1049: "เขตทุ่งครุ",
                    1050: "เขตบางบอน",
                },
            }
        }

    def describe(self, national_id: str):
        if not national_id.isdigit():
            raise ValueError(f"Your input data is not all numbers")

        province_name = self.get_province(int(national_id[1:3]))
        message = f"Province = {province_name}"
        return message

    def get_province(self, num: int) -> str:
        province_name = self.provinces.get(num)
        if province_name:
            return province_name["province_name"]
        return "Not found"
